11. maj 2006 - 15:59Der er
4 kommentarer og 1 løsning
Pointere til records
Nedenstående kode er nok lidt kryptisk …, men er den korrekt udformet vedr. brug at pointer og record??? (Pointeren herunder er overflødig, men spørgsmålet går på om brugen er korrekt udformet!)
Psudokode 1) Modtager x recort fra en dll, 2) disse record tilføjes løbende i en liste, og 3) til slut bruges og frigøres disse samlet.
type TDllRec = Record A: double; B: double; PTDllRec = ^ TDllRec; var DllRec: TDllRec; List: TList; begin For i:= 0 to abc do //abc … en eller anden variable værdi begin DllRec = BeregnAB(); //dll kald der returnerer en record new(PTDllRec); PTDllRec^:= DllRec; List.Add(PTDllRec); end; :: for i:= 0 to List.Count-1 do begin TilfoejRecord( TDllRec(List[i]^) ); //procedure der behandler recorden Dispose(List[i]); end; end;
Tak for svar. Beklager hvis der først kommer svar igen herfra på mandag.
PTDllRec^:= DllRec; dette dur selfølgelig heller ikke af samme årsag som ovenfor
type TDllRec = Record A: double; B: double; PTDllRec = ^ TDllRec; var DllRec: TDllRec; myptr: PTDllRec; List: TList; begin For i:= 0 to abc do //abc … en eller anden variable værdi begin DllRec = BeregnAB(); //dll kald der returnerer en record new(myptr); myptr := DllRec; List.Add(myptr); end; :: for i:= 0 to List.Count-1 do begin TilfoejRecord( TDllRec(List[i]^) ); //procedure der behandler recorden Dispose(List[i]); end; end;
type TDllRec = Record A: double; B: double; end; PTDllRec = ^TDllRec; var DllRec: TDllRec; myptr: PTDllRec; List: TList; begin For i:= 0 to abc do //abc … en eller anden variable værdi begin DllRec = BeregnAB(); //dll kald der returnerer en record new(myptr); myptr^ := DllRec; List.Add(myptr); end; :: for i:= 0 to List.Count-1 do begin TilfoejRecord( TDllRec(List[i]^) ); //procedure der behandler recorden Dispose(List[i]); end; end;
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.