![]() |
Re: Prozedur in Typendeklaration
Moin Niels,
ich auch, und das sieht dann so aus:
Delphi-Quellcode:
Klappt auch, obwohl ich die Wahl von new als Prozedurenamen ansonsten als unglücklich erachte, da es eine Prozedur gleichen Namens ja schon gibt.
procedure New(var node: dNode);
begin // Was auch immer damit passieren soll end; procedure TForm1.Button1Click(Sender: TObject); var pWork : pNode; dWork : dNode; begin pWork.new := @new; dWork := @dWork; pWork.new(dWork); end; BTW: Den Recordtypen mit p beginnen zu lassen, und den zugehörigen Pointer mit d hat mich offengestanden ein klein wenig irritiert. Eigentlich beginnen Pointer mit p (besser P). |
Re: Prozedur in Typendeklaration
Danke. Ich guck erstmal wie weit ich jetzt komm :)
Wegen der Typenbezeichnung: ich hatte immer: type dpnode = ^dnode dnode = record... aber dpnode war zu lang und intern ist das ja sowieso egal. |
Re: Prozedur in Typendeklaration
Delphi-Quellcode:
So, sieht das ding komplett aus.
unit Unit2;
interface type PVListNode = ^TVListNode; TVListNode = record pNext : PVListNode; fData : record end; end; TVList = class private pFirst : PVListNode; iDataSize : Integer; protected function GetLast : PVListNode; public constructor Create(aiDataSize : Integer); destructor Destroy; override; // fehlt noch procedure AddItem(const fData); procedure DeleteAll; end; implementation { TVList } procedure TVList.AddItem(const fData); var pNew : PVListNode; begin GetMem(pNew, SizeOf(TVListNode) * iDataSize); pNew^.pNext := nil; Move(fData, pNew^.fData, iDataSize); // Daten in Buffer if pFirst = nil then pFirst := pNew else GetLast^.pNext := pNew; end; constructor TVList.Create(aiDataSize : Integer); begin inherited Create; pFirst := nil; iDataSize := aiDataSize; end; destructor TVList.Destroy; begin DeleteAll; inherited; end; function TVList.GetLast: PVListNode; begin if pFirst = nil then Result := nil else begin Result := pFirst; while Result^.pNext <> nil do Result := Result^.pNext; end; end; end. Anmerk: wie haben via ICQ getextet. |
Re: Prozedur in Typendeklaration
Danke für deine Hilfe (auch wenn ichs über ICQ schon gesagt hab) :wink:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz