11. januar 2007 - 14:44
Der er
1 kommentar og
1 løsning
Kalde procedure med self variabel
Hej eksperter.
Hvad kan jeg gøre i nedenstående tilfælde:(jeg har kun kopieret relevant kode)
type Tsignal = class
ukort:integer;
port:Tport;
constructor create(ukort:integer;port:Tport);
procedure SetGreen;
end;
type Tkort = class
procedure WriteKort(port:integer;setting:boolean);
end;
procedure Tsignal.SetGreen;
begin
case ukort of
1: kort1.WriteKort(self.port,true);
2: kort2.WriteKort(self.port,true);
3: kort3.WriteKort(self.port,true);
4: kort4.WriteKort(self.port,true);
5: kort5.WriteKort(self.port,true);
......
end;
end;
procedure Tkort.WriteKort(port:integer;setting:boolean);
begin
porte[port]:=setting;
end;
Jeg vil gerne af med case sætninger i SetGreen proceduren og i stedet gøre noget i retning af:
procedure Tsignal.SetGreen;
begin
(kort+(self.ukort)).WriteKort(self.port,true);
end;
Er det mulig?
Pft. Ellgaard
12. januar 2007 - 07:46
#1
du kan lave noget i retnng af
type Tsignal = class
ukort:tObject; // integer;
KortID: integer;
port:Tport;
constructor create(ukort:tObject;port:Tport);
procedure SetGreen;
end;
var kort : tKort;
aKort : Array [0..10] of tKort;
procedure Tsignal.SetGreen;
begin
tKort(self.ukort).WriteKort(self.port,true);
tKort(aKort[self.kortID]).WriteKort(self.port,true);
(*case ukort of
1: kort1.WriteKort(self.port,true);
2: kort2.WriteKort(self.port,true);
3: kort3.WriteKort(self.port,true);
4: kort4.WriteKort(self.port,true);
5: kort5.WriteKort(self.port,true);
end;
*)
end;
Constructor tSignal.create(ukort:tObject;port:Tport);
begin
end;
procedure tKort.WriteKort(port:integer;setting:boolean);
begin
end;
hvor du enten kan bruge kort/ukort eller aKort/KortID alt afhængig af hvordan dine kort skal være tilgængelige i Signal-objektet.
mvh Anders