Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi treeview record laden (https://www.delphipraxis.net/172766-treeview-record-laden.html)

nextname 21. Jan 2013 21:48

treeview record laden
 
Bei einem Projekt zum Treeview komm ich gerade leider nicht weiter.

Delphi-Quellcode:
type TS20 = String[20];
     TS3 = String[3];
     TS1 = String[1];
     Tdatenzeiger=^TSchueler;
     TSchueler = record
       name, vorname:TS20;
       klasse:TS3;
       Note1,Note2,Note3,Note4,Note5:TS1;
     end;

    akt,aktkl,schule:TTreeNode;
    datenzeiger : TDatenzeiger;
    Schueler : TSchueler;
Einerseits gibt ein kleines Problem beim Löschen. Ich soll es wie folgt handhaben, damit der Speicher freigegeben wird aber es gibt "zu viele Parameter"
Delphi-Quellcode:
datenzeiger := akt.data;
 free(datenzeiger);
Das größere Problem ist das Laden des gespeicherten Records (.txt file of Tschueler). Wie zerlege ich den einen langen String in seine Records und dann in seine einzelnen Bestandteile? Mit Memos hatte ich sowas in der Art schonmal gemacht, aber es soll hier ohne Memo funktionieren und die txt ist anders aufgebaut.
Code:
Bsp einer txt (ohne ascii zeichen die hier fehln)
stein              alex               5a 00000stein              saskia             5a 00000weinn              lisaia             5a 00000hagen              günter             5b 00000meier              josefr             5b 00000
Verdammt. Bei der Kontrolle gerade ziegt sich, dass etwas beim Speichern net stimmt, weil aus Lisa Lisaia wird... mal kuckn. Die Speicherschleife ruft die einzelnen Recordteile auf und weist Schueler diese jeweils zu, muss man nach dem Speichern des Schülers 1 das Schueler wieder auf "0" setzen? Wie macht man das elegant? Allen Teilen nen leeren string zuweisen würd gehn, aber naja :/

mfg nextname

Bummi 21. Jan 2013 22:39

AW: treeview record laden
 
ein bisschen viele Unbekannte für den geneigten Leser ....

Lemmy 22. Jan 2013 05:37

AW: treeview record laden
 
Hallo,

wenn wir von Delphi sprechen kann Free nicht funktionieren, da das die Methode ist um Objekte freizugeben. Entweder FreeMem() oder besser Dispose() nehmen.

Grüße

nextname 22. Jan 2013 16:38

AW: treeview record laden
 
danke lemmy hat geklappt

@bummi: Man muss wissen wie der String aufgebaut ist, damit man ihn zerlegen kann. Darum die ganzen angaben, aber es geht auch einfacher:
z für Zeichen
20z 20z 3z 1z 1z 1z 1z 1z 20z 20z 3z 1z 1z 1z 1z 1z usw. Leerzeichen steht für irgendein Symbol dass da halt ist.

Delphi-Quellcode:
begin
  if OpenDialog1.Execute then
  begin
    assignfile(datei,OpenDialog1.FileName);
    Reset(Datei);
    While not eof(Datei) do
    begin
      Read(Datei,Schueler);
      schueler.klasse:=klasse;
      schueler.name:=name;
      schueler.vorname:=vname;
      schueler.Note1:=note1;
      schueler.Note2:=note2;
      schueler.Note3:=note3;
      schueler.Note4:=note4;
      schueler.Note5:=note5;
      with Schueler do Schueler_anlegen(Klasse,Name,Vname,note1,note2,note3,note4,note5);
    end;
    closefile(datei);
  end;
end;
Die einzelnen Eigenschaften von Schueler kann ich ja nicht einfach abfragen. Wie komme ich nun vom string zu diesen?

btw: Speicherproblem mitm überschreiben mit Leerzeicehn gelöst...

mfg nextname


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