Avatar billede ellgaard Nybegynder
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
Avatar billede a_nor Nybegynder
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
Avatar billede ellgaard Nybegynder
18. august 2010 - 15:28 #2
Lukket
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester