Avatar billede sofsilva Nybegynder
31. juli 2005 - 14:45 Der er 10 kommentarer og
1 løsning

Ændring af global record data i procedure

Hej,

Jeg har defineret:



TData =class
private
procedure InsertData(tables:Tstringlist;Data:DataRecord);
public
published
Data1,Data2:DataRecord;
end; //end class

public
Data:Tdata;

Når jeg så forsøger at indsætte data i for eksemple Data1 v.hj.a.

Data:=Tdata.create;
Data.InsertData(tables,Data.Data1);

Så kaldes Data.InsertData fint men data'erne insættes kun lokalt i proceduren. Så jeg kan ikke senere få fat i dem ved Data.Data1

Hvad gør jeg forkert?

mvh,

Sof
Avatar billede kroning Nybegynder
31. juli 2005 - 14:54 #1
Hvordan ser din InsertData kode ud?
Avatar billede kroning Nybegynder
31. juli 2005 - 14:56 #2
Prøv evt. med:
procedure InsertData(tables:Tstringlist;var Data:DataRecord);

bemærk var
Avatar billede sofsilva Nybegynder
31. juli 2005 - 15:07 #3
Tak, det virker
Avatar billede martinlind Nybegynder
31. juli 2005 - 15:07 #4
Det har ikke noget med var parameteren at gøre.

hvordan ser din procedure InsertData(tables:Tstringlist;Data:DataRecord);
ud
Avatar billede sofsilva Nybegynder
31. juli 2005 - 15:18 #5
Nu ser den ud som følgende:

procedure Tdata.InsertData(tables:Tstringlist;Var Data:DataRecord);
var
I:integer;
begin
for I:=0 to tables.Count-1 do
  begin
  Data.table[I][0]:=strtoint(stringsplitter(0,1,stringsplitter(0,1,tables[I],#9),' '));
  Data.table[I][1]:=strtoint(stringsplitter(0,1,stringsplitter(1,2,tables[I],#9),' '));
  Data.table[I][2]:=strtoint(stringsplitter(0,1,stringsplitter(2,3,tables[I],#9),' '));
    end;
end;
Avatar billede sofsilva Nybegynder
31. juli 2005 - 15:23 #6
Er det korrekt at "Var" betyder at metoden bliver kaldt med en reference? Hvilket betyder at det er referencen der bliver ændret og ikke en nyoprettet lokal Datarecord.
Avatar billede kroning Nybegynder
31. juli 2005 - 15:48 #7
Ja
Avatar billede martinlind Nybegynder
31. juli 2005 - 16:29 #8
og derfor skal du jo ikke ha' en var på
Avatar billede sofsilva Nybegynder
31. juli 2005 - 16:51 #9
? Det var jo netop referencen jeg ville ændre.
Avatar billede martinlind Nybegynder
31. juli 2005 - 18:19 #10
Jeg tror du skal læse lidt på Object'er og hvordan og hvad man bruger dem til, man pakker netop sine data ind i et obj. for at men har "lidt styr på" hvordan de bliver skrevet/læst, man laver ikke et class med var's for at ændre en ref. med en metode.
Avatar billede sofsilva Nybegynder
31. juli 2005 - 18:55 #11
Ok, du har ret det er ikke særlig smukt. Kan du give et eksemple i dette tilfælde hvordan jeg burde have gjort?
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