AGB  ·  Datenschutz  ·  Impressum  







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

Unedlich viele Pointer

Ein Thema von theomega · begonnen am 11. Jan 2003 · letzter Beitrag vom 11. Jan 2003
Antwort Antwort
Benutzerbild von theomega
theomega

Registriert seit: 18. Jun 2002
684 Beiträge
 
#1

Unedlich viele Pointer

  Alt 11. Jan 2003, 15:39
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
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#2
  Alt 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;
......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Unedlich viele Pointer

  Alt 11. Jan 2003, 15:49
Hai

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.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von theomega
theomega

Registriert seit: 18. Jun 2002
684 Beiträge
 
#4
  Alt 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
  Mit Zitat antworten Zitat
Benutzerbild von theomega
theomega

Registriert seit: 18. Jun 2002
684 Beiträge
 
#5
  Alt 11. Jan 2003, 17:24
stimmt denn das, dass ein Pointer auf ein dynamisches Array nicht geht?
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#6
  Alt 11. Jan 2003, 18:05
Wenn oben nicht geht, keine Zeit zum Testen , 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;
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Antwort Antwort


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 17:49 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