![]() |
labels abspeichern
ich will ne menge labels abspeichern übern 2 arrays.
aber irgenwie will er die labels wenn er sie geladen hat nicht akktualisren bzw überschreiben. warum? zuständiger quelltext ausschnitt:
Delphi-Quellcode:
procedure TForm2.saveClick(Sender: TObject);
var datei : file of tlabel; i :integer; begin try if savedialog.Execute then begin assignfile(datei,savedialog.FileName); rewrite(datei); for i := 0 to 12 do write(datei,mainunit.lblarray[i]); for i := 0 to 19 do write(datei,mo1); end; finally closefile(datei);end; end; procedure TForm2.LadenClick(Sender: TObject); var datei : file of tlabel; i : integer; begin try if opendialog.Execute then begin assignfile(datei,opendialog.FileName); reset(datei); for i:=0 to 12 do read(datei,lblarray[i]); for i := 0 to 19 do read(datei,mo1); end; finally closefile(datei); end; end; |
Re: labels abspeichern
Bei Klassen geht das so nicht.
|
Re: labels abspeichern
array of tlabel enthält nur die Objekt-intstanz-variablen ... du mußt schon den Inhalt der Labels speichern.
|
Re: labels abspeichern
Dein try/finally ist gefährlich gebaut und kann zu undefiniertem Verhalten führen!
Hintergrund: datei ist eine lokale Variable und enthält somit zufällige Werte. Die Wahrscheinlichkeit, dass der in der Struktur enthaltene FileHandle Member ungleich INVALID_HANDLE_VALUE ist, ist sehr hoch. Dadurch wird mit dem CloseFile() im Fehlerfall (vor dem Öffnen) bzw. wenn SaveDialog abgebrochen wird ein ganz anderes File Handle geschlossen. Das try vom try/finally muss immer nach dem AssignFile() erscheinen, da AssignFile() die Struktur komplett initialisiert. |
Re: labels abspeichern
ich brauch eig nur die farbe und die caption von den label. kann ich in ein "file of tlabel" die eigenschfaten einfach so reinspeichern? glaube ich zwar nicht aber frage ist es wert^^.
welche anderen möglichkeiten gibt es? @muetze1. das try is im nur eingebaut um zu sehen, ob er zwinschen durch abbricht ohne das es angezeigt wird. wird also noch verbessert. (sry war eben nicht ganz dabei^^) |
Re: labels abspeichern
@tabl: Welche Sprache ist das bitte? Lese den Beitrag noch einmal durch und korrigiere ihn so, das ein normaler Leser ihn auch verstehen kann.
|
Re: labels abspeichern
möglichkeiten:
![]() |
Re: labels abspeichern
danke für den link
werde warscheinlich auf die ini zurück greifen, scheint mir am einfachsten. ps: das blöde an der suchfunktion ist das einen die richtigen suchwörter fehlen^^ edit: mir ist grad ne eigene idee gekommen. könnete ich eine klasse oder record basteln die die eigensachaften hat die ich brauch und die dann auf den oben geposten weg speichern? |
Re: labels abspeichern
Zitat:
> also String und Co. (abgesehn von statschem Char-Array und ShortStrin), dynamische Arrays, Objekte müssen extra behandelt werden. |
Re: labels abspeichern
edit1:
für alle die die das gleiche problem wie ich haben eine mogliche lösung(über einen hilfrecord:
Delphi-Quellcode:
...
type thilflabel = record // definiren des hilfrecord mit den nötigen eigenschaften caption : string[100]; // darf kein dynamischer string sein, da sonst ein fehler entsteht color : tcolor; // sollte klar sein end; ... var hilflblarray : array[0..19] of thilflblarray; //array defeniren, damit man nicht für jedes label einen neuen machen muss lblarray2 : array[0..19] of tlabel; // zuweisung sollte klar sein und erspart eine menge schreib arbeit^^ ... procedure TForm2.saveClick(Sender: TObject); var datei : file of thilflabel; i :integer; begin if savedialog.Execute then begin assignfile(datei,savedialog.FileName); try rewrite(datei); for i:=0 to 19 do begin hilflblarray[i].caption := lblarray2[i].Caption; // werte in den record übergeben hilflblarray[i].color := lblarray2[i].Color; write(datei,hilflblarray[i]); // und anschliessen sepichern end; finally closefile(datei); end; end; end; procedure TForm2.LadenClick(Sender: TObject); var datei : file of thilflabel; i :integer; begin if opendialog.Execute then begin assignfile(datei,opendialog.FileName); try reset(datei); for i := 0 to 19 do begin read(datei,hilflblarray[i]); // hier das genaze umgekehrt erst in den recor lesen lblarray2[i].Caption := hilflblarray[i].caption; // und auf label übertragen lblarray2[i].Color := hilflblarray[i].color; end; finally closefile(datei); end; end; end; ps: ich glaub mann braucht kein array sondern kann den record einfach überschreiben^^ edit2: ps2 wenn morgen ans drucken geht fällt mir bestimmt auch nch en prob ein, also stellt euch schonmal drauf ein^^ |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:23 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