![]() |
Problem mit abspeichern von Record
Ich habe ein eigentlich total n00biges Problem, komme aber irgendwie trotzdem nicht weiter.
Und zwar geht es darum, dass ich einen record abspeichern will. Ich habe also meinen record
Delphi-Quellcode:
und will den jetzt abspeichern. so sieht das bei mir jetzt aus:
type TDaten = record
bilder: array[1..19] of TBitmap; end;
Delphi-Quellcode:
Ausserdem habe ich noch 19 Edits auf dem Formular, in denen die Dateinamen stehen. Oder auch gar nichts. Sprich, es sollen bis zu 19 Bitmaps in das eine file rein.
procedure TForm1.SpeichernClick(Sender: TObject);
var i: integer; myFile : File of TDaten; datei: tdaten; begin if savedialog1.Execute then AssignFile(myFile, savedialog1.FileName); ReWrite(myFile); for i := 1 to 19 do with findcomponent('Edit'+inttostr(i)) as TEdit do begin if (not fileexists(text)) then break; datei.bilder[i].LoadFromFile(text); if (text = '') then datei.bilder[i] := nil; end; Write(myfile, datei); CloseFile(myFile); end; Vielleicht liegt es an meiner Müdigkeit, aber ich komme im Moment irgendwie nicht hinter den dämlichen Fehler. Das Programm startet nämlich ordnungsgemäß, ich wähle eine Datei oder mehrere aus, und klicke dann auf den speichern-button. und dann krieg ich ne access violation. Die Datei, die ich erstellen wollte, gibt's dann auch wirklich, sie ist aber logischerweise 0 Byte groß. Kann mir wer von Euch helfen? Wäre echt dankbar, will das Ding möglichst schnell fertig kriegen, um diese Datei mit den bildern drin zu erstellen, die ich dann in einem anderen Programm weiterverwenden werde. Sonst kopiere ich halt die Bitmaps einfach mit der fertigen EXE, ginge auch... |
Re: Problem mit abspeichern von Record
begin und end sagen Dir etwas?
|
Re: Problem mit abspeichern von Record
ähm... ja
aber was ist an meinen falsch? |
Re: Problem mit abspeichern von Record
Erstes Problem: Was passiert, wenn der Dialog abgebrochen wird?
|
Re: Problem mit abspeichern von Record
naja, da nur ich das teil verwende und den dialog nie abrrechen werde habe ich das weggelassen... ich weiß, schlampig, aber gut, kann ich natürlich ändern.
|
Re: Problem mit abspeichern von Record
Delphi-Quellcode:
Das 2. Problem wird sein, dass nicht die Grafiken, sondern die Objektreferenzen (= Zeiger) gespeichert werden, so dass Du später nichts damit anfangen kannst.
procedure TForm1.SpeichernClick(Sender: TObject);
var i: integer; myFile : File of TDaten; datei: tdaten; begin if savedialog1.Execute then begin //Blockanfang AssignFile(myFile, savedialog1.FileName); ReWrite(myFile); for i := 1 to 19 do begin //innerer Block Anfang with findcomponent('Edit'+inttostr(i)) as TEdit do begin if (not fileexists(text)) then break; datei.bilder[i].LoadFromFile(text); if (text = '') then datei.bilder[i] := nil; end; Write(myfile, datei); end; //innerer Block Ende CloseFile(myFile); end; //Blockende end; [edit] Nun hab ich selbst einen Block übersehen :oops: [/edit] |
Re: Problem mit abspeichern von Record
wegen den zeigern: hm... ja, stimmt, an so was kann ich mich jetzt auch noch erinnern. danke.
aber wie umgehe ich dieses problem? edit: übrigens kriege ich immer noch die access violation. read bei adresse 0000000000 (hab die nullen nicht gezählt :-)) edit2:der fehler kommt übrigens in der zeile wo das bitmap in daten.bilder[i] geladen wird. |
Re: Problem mit abspeichern von Record
Du könntest nun wahnsinnig komplizierte Dinge mit Streams anstellen, aber das einfachste sollte sein, die Grafiken in einem definierten Verzeichnis abzulegen und die einzelnen Dateinamen in Deinem Array abzulegen und zu speichern.
|
Re: Problem mit abspeichern von Record
Ähm, nochmal zum Verständnis:
Du willst mehrere Bitmaps in einer Datei speichern. Bis zu 19, korrekt? Wenn ja, was erwartest Du Dir davon? Was hast Du vor? |
Re: Problem mit abspeichern von Record
naja, ich will eine datei mit den ganzen bildern drin, und der user hat keinen direkten zugriff drauf. aber die lösung von deddih ist glaube ich die beste.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:44 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