Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Unedlich viele Pointer (https://www.delphipraxis.net/2188-unedlich-viele-pointer.html)

theomega 11. Jan 2003 15:39


Unedlich viele Pointer
 
Hallo
habe da ein kompliertes Problem:
Ich lade aus einer Datei bestimmte Daten und erstell anhand von diesen Daten einen Treeview. Da es aber auch noch Daten gibt, die von meinem Programm gebraucht werden, die aber nicht in der caption der TreeNode stehen, habe ich mit
Delphi-Quellcode:
type TFunktion=record
        funktionnr:string;
        funktionname:string;
end;
PFunktion=^TFunktion;

...
Pointer erstellt, die ich ja mit der "Data" Eigentschaft an eine TreeNode binden kann. So weit so gut, jetzt habe ich aber ein Problem:

an eine Treenode (die auf der tiefsten Ebene) sollen jetzt Daten gebunden werden (Belege). Da ich aber im voraus nicht weiß, wieviele Belege vorhanden sind, kann ich dass nicht wie oben lösen. Folgende Datentyp habe ich schon geschrieben:
Delphi-Quellcode:

type TBeleg=record
        belegdatum: TDateTime;
        betrag: double;
        spendenbescheinigungsnr: string;
        ausgestelltam: TDateTime;
        sachlicherichtigkeit:string;
        rechnericherichtigkeit:string;
        einnahme:boolean;
end;
Nochmal: von diesem Typ sollen beliebig viele an eine TreeNode gebunden werden.

Wie könnte ich das lösen?`

Danke

TO

sakura 11. Jan 2003 15:44

Mach Dir doch noch einen Beleg-Array
Delphi-Quellcode:
type
  TBeleg = record
    belegdatum: TDateTime;
    betrag: double;
    spendenbescheinigungsnr: string;
    ausgestelltam: TDateTime;
    sachlicherichtigkeit:string;
    rechnericherichtigkeit:string;
    einnahme:boolean;
  end;
  TBelegArray = array of TBeleg;
  PBelegArray = ^TBelegArray;
...:cat:...

Sharky 11. Jan 2003 15:49

Re: Unedlich viele Pointer
 
Hai

Zitat:

Zitat von theomega
... Da ich aber im voraus nicht weiß, wieviele Belege vorhanden sind, kann ich dass nicht wie oben lösen ....

Verknüpfe doch einfach den einzelnen Records.

Delphi-Quellcode:

type
      PBeleg = ^TBeleg;

      TBeleg=record
        belegdatum: TDateTime;
        betrag: double;
        spendenbescheinigungsnr: string;
        ausgestelltam: TDateTime;
        sachlicherichtigkeit:string;
        rechnericherichtigkeit:string;
        einnahme:boolean;
        next_beleg : PBeleg     //Pointer auf den Nächsten Beleg

end;
Bei dem letzten Beleg setzt du next_beleg aufl NIL.
Wenn Du nun noch einen Beleg anhängen möchtest, musst Du die Kette so lange durchlaufen bis du zu dem Record mit next_beleg = NIL kommst. Dann next_beleg auf den Pointer des neuen Records setzen und nex_beleg des neuen auf NIL.


Ich hoffe ich habe es einigermaßen verständlich beschrieben.

theomega 11. Jan 2003 15:59

@sharky: So könnte es gehen
@sakura: So geht es vermutlich nicht, weil ich (habe ich mal gehört) keine Pointer auf Dynamische Tabellen machen kann

theomega 11. Jan 2003 17:24

stimmt denn das, dass ein Pointer auf ein dynamisches Array nicht geht?

sakura 11. Jan 2003 18:05

Wenn oben nicht geht, keine Zeit zum Testen :D, dann aber so
Delphi-Quellcode:
type
  TBeleg = record
    belegdatum: TDateTime;
    betrag: double;
    spendenbescheinigungsnr: string;
    ausgestelltam: TDateTime;
    sachlicherichtigkeit:string;
    rechnericherichtigkeit:string;
    einnahme:boolean;
  end;
  TBelegArray = record
    BelegArray: array of TBeleg;
  end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:30 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