AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Prozedur in Typendeklaration

Ein Thema von Niels · begonnen am 4. Nov 2003 · letzter Beitrag vom 4. Nov 2003
Antwort Antwort
Seite 2 von 2     12   
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#11

Re: Prozedur in Typendeklaration

  Alt 4. Nov 2003, 20:27
Moin Niels,

ich auch, und das sieht dann so aus:

Delphi-Quellcode:
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;
Klappt auch, obwohl ich die Wahl von new als Prozedurenamen ansonsten als unglücklich erachte, da es eine Prozedur gleichen Namens ja schon gibt.
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).
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Niels

Registriert seit: 25. Okt 2003
192 Beiträge
 
#12

Re: Prozedur in Typendeklaration

  Alt 4. Nov 2003, 20:44
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.
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#13

Re: Prozedur in Typendeklaration

  Alt 4. Nov 2003, 20:51
Delphi-Quellcode:
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.
So, sieht das ding komplett aus.

Anmerk: wie haben via ICQ getextet.
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
Niels

Registriert seit: 25. Okt 2003
192 Beiträge
 
#14

Re: Prozedur in Typendeklaration

  Alt 4. Nov 2003, 21:05
Danke für deine Hilfe (auch wenn ichs über ICQ schon gesagt hab)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz