![]() |
Record-Array speichern ???
Hallo Leute !!!
Bin neu hier. Und hab gleich mal eine Frage an Euch. Folgendes Problem: Ich habe eine "CD Sammlung" geschrieben, in der ich Interpret, Albumtitel, Jahr, Tracks, Genre und Dauer eingeben kann. Die habe ich in einen Record-Array geschrieben:
Delphi-Quellcode:
Das klappt auch alles einwandfrei. Ich habe es in einer StringGrid ausgegeben.
type
cd_sammlung = record interpret : string [ 20 ]; album : string [ 30 ]; jahr : integer; tracks : integer; genre : string [ 20 ]; zeit : real; nummer : integer; end; cdfeld = array [ 1..20 ] of cd_sammlung; var alle_cd : cdfeld; Nun möchte ich den Record speichern:
Delphi-Quellcode:
und über folgende Procedure wieder laden:
procedure TForm1.btn_saveClick(Sender: TObject);
var i: integer; FileStr: TFileStream; begin FileStr := TFileStream.Create('C:\Temp\Variable.dat', fmCreate); try FileStr.Write(anzahl, SizeOf(Integer) ); for i := 0 to anzahl - 1 do FileStr.Write(alle_cd[i], SizeOf(cdfeld) ); except showmessage('FETTIG!!!'); end; end;
Delphi-Quellcode:
Das ist alles schön und gut und funktioniert auch einmal, aber nachdem ich
procedure TForm1.btn_loadClick(Sender: TObject);
var i: integer; FileStr: TFileStream; begin FileStr := TFileStream.Create('C:\Temp\Variable.dat', fmOpenRead); FileStr.Read(anzahl, SizeOf(integer) ); for i := 0 to anzahl - 1 do FileStr.Read(alle_cd[i], SizeOf(cdfeld) ); end; die Datei einmal geladen habe und eine weitere CD eintragen möchte und diese wiederum abspeichern möchte bringt er mir einen Fehler: Datei "C:\Temp\Variable.dat" kann nicht erstellt werden. Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird. Ich hoffe es kann mir jemand helfen. Gruß omisliebling |
Re: Record-Array speichern ???
mach dahinter jeweils Filestr.Free!
das sollte funzen :wink: |
Re: Record-Array speichern ???
Hi!
Ich würde da unbedingt nen Try..Finally-Block machen und dann im Finally den Filestream wieder freigeben. Ciao Frederic |
Re: Record-Array speichern ???
Hi !!!
Könntet Ihr mir das ausführlich erklären (wo genau muss ich das hinschreiben) ??? Bin noch nicht der Ober-Checker in solchen Sachen... Am besten Ihr könntet mir meinen Quelltext verbessern an der betreffenden Stelle. THX im vorraus Gruß omisliebling |
Re: Record-Array speichern ???
Hi!
Herzlich Willkommen in der DP! Ich glaube es gab dazu letzt ein Tutorial. Schau mal in der entsprechenden Sparte. Ciao Frederic |
Re: Record-Array speichern ???
Ein weiterer Fehler müsste das SizeOf(cdfeld) sein. richtig ist SizeOf(cd_sammlung). Du willst ja in der Schleife jeweils ein Eintrag abspeichern. Dann musst du auch die größe von einem Eintrag nehmen ;)
|
Re: Record-Array speichern ???
@ fkerber & glkgereon: DANKE, vielmals !!!!!!!
Es hat anscheind genau daran gelegen. Ich habe einfach einen Try..Finally-Block hinzugefügt und den Filestream wieder freigeben. @ jim_raynor: Danke auch für deine Hilfe, aber das musste ich nicht verändern. Es hat auch ohne das funktioniert !! @all: DANKE, nochmals vielen DANK !!!!! :wink: IHRE SEIT DIE BESTEN !!! So schnell habe ich noch NIE ein Problem gelöst! :dp: :dp: :dp: :dp: :dp: :dp: :dp: :dp: Gruß omisliebling |
Re: Record-Array speichern ???
@jimraynor-problematik: so wie ich das sehe, belegst du aber unnötig speicher.
|
Re: Record-Array speichern ???
@ nailor: Hauptsache das Programm funktioniert !!! :wink: Um die Feinheiten kümmere ich mich zum Schluss.
Gruß omisliebling |
Re: Record-Array speichern ???
Zitat:
|
Re: Record-Array speichern ???
zu der sizeof problematik:
ist es so, das anzahl die anzahl der realen CD items aussagt ? also maximal 21 CD felder dann stimme ich raynor zu |
Re: Record-Array speichern ???
JA "anzahl" ist die Anzahl der vorhandenen CD-Items.
Und seltsamerweise kann ich mehr als 20 CDs eintragen, obwohl ich ja
Delphi-Quellcode:
eingetragen habe.
cdfeld = array [ 1..20 ] of cd_sammlung;
Gruß omisliebling |
Re: Record-Array speichern ???
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:59 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 by Thomas Breitkreuz