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
Annonceindlæg fra DE-CIX
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