Datei laden
Guten Morgen,
wir haben Probleme beim Öffnen einer von uns gespeicherten Datei. Das Speichern funktioniert, die Werte werden ein einer Textdatei abgespeichert. Wir wissen jetzt aber auch nich genau, was wir bei readln in die Prozedur hineinschreiben sollen...Ist wahrscheinlich eine blöde Fragen,aber wir kommen einfach nicht weiter :(
Delphi-Quellcode:
[edit=SirThornberry]Delphi-Tags gesetzt - nächstes mal bitte selbst machen - Mfg, SirThornberry[/edit]
//Speichern unter - Funktion einrichten
procedure TForm1.Speichernunter1Click(Sender: TObject); begin if SaveDialog1.execute then begin assignfile (Datei, SaveDialog1.FileName); rewrite (Datei); writeln(Datei,editpalettenlast.text); writeln(Datei,editlagerhoehe.text); writeln(Datei,editregallaenge.text); writeln(Datei,editpalettenanzahl.text); writeln(Datei,editzellenbreite.Text); writeln(Datei,edittyp.Text); writeln(Datei,editkosteni.Text); writeln(Datei,editkostenu.Text); writeln(Datei,editgesamtkosten.Text); writeln(Datei,editkostenpropalette.Text); CloseFile(Datei); end; end; procedure TForm1.ffnen2Click(Sender: TObject); var Inhalt:string ; begin if opendialog1.execute then begin assignfile(Datei,opendialog1.filename); reset(Datei); readln(Datei,Inhalt); CloseFile(Datei); end; end; |
Re: Datei laden
Di Umkehrung: ReadLn lädt je eine Zeile
|
Re: Datei laden
Ihr müsst solange lesen, bis EOF (=End of File) true ist.
Delphi-Quellcode:
while not EOF(datei) do
begin readln(datei, stringvariable); ... end; CloseFile(datei); |
Re: Datei laden
.. nun readln heißt readln weil es eine Zeile aus einer Textdatei liest (read line).
Wenn man also mehrere Zeilen lesen möchte sollte man readln des öfteren ausführen. Grüße Klaus |
Re: Datei laden
(mal reformatiert)
Delphi-Quellcode:
In Delphi existiert die Funktion
//Speichern unter - Funktion einrichten
procedure TForm1.Speichernunter1Click(Sender: TObject); begin if SaveDialog1.execute then begin assignfile (Datei, SaveDialog1.FileName); rewrite (Datei); writeln(Datei,editpalettenlast.text); writeln(Datei,editlagerhoehe.text); writeln(Datei,editregallaenge.text); writeln(Datei,editpalettenanzahl.text); writeln(Datei,editzellenbreite.Text); writeln(Datei,edittyp.Text); writeln(Datei,editkosteni.Text); writeln(Datei,editkostenu.Text); writeln(Datei,editgesamtkosten.Text); writeln(Datei,editkostenpropalette.Text); CloseFile(Datei); end; end; procedure TForm1.ffnen2Click(Sender: TObject); var Inhalt:string ; begin if opendialog1.execute then begin assignfile(Datei,opendialog1.filename); reset(Datei); //hier Überprüfung auf Eof einbauen readln(Datei,Inhalt); CloseFile(Datei); end; end;
Delphi-Quellcode:
damit solltet ihr (wenn ihrs komplett einlesen wollt) in einer Schleife (while) jedes mal prüfen, ob das Dateiende erreicht ist, und ansonsten eine weitere Zeile in einen Buffer einlesen und den dann nach kompletten Einlesen anzeigen.
function Eof(var F: file): Boolean;
Hoffe das hat euch geholfen. :dp: |
Re: Datei laden
Also schreibt man bei readln jedes mal wieder diese Editfelder rein,aus denen beim Speichern ja auch gelesen wurde?
z.B readln (Datei,editpalettenlast.text) usw. |
Re: Datei laden
Delphi-Quellcode:
editpalettenlast.text := readln (Datei);
|
Re: Datei laden
Hm?
Delphi-Quellcode:
readln (Datei,editpalettenlast.text);
|
Re: Datei laden
Ohne es getestet zu haben würde ich sagen, dass man eine Zwischenvariable braucht, da Text eine Eigenschaft und keine Variable ist.
// EDIT: Genau:
Delphi-Quellcode:
Readln(Datei, Inhalt);
editpalettenlast.Text := Inhalt; ... |
Re: Datei laden
Ich würde sowieso eine Stringliste vorziehen, aber das scheint eine Hausaufgabe o.ä. zu sein. Wer weiß, ob da die "alte" Dateiverarbeitung gefordert wird.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:53 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