![]() |
einen String in eine neue/leere Datei schreiben
Wie kann ich einen String in eine neue Datei schreiben lassen?
Und wie kann ich den String wieder aus der Datei herauslesen? |
wo nimmste denn den string her? vielleicht aus memo oder listbox oder so?
gruss haegar |
Aus einer TComboBox (hab sie UserListe genannt) nehm ich diesen String und bewerkstelligen will ich, dass der aktuell ausgewählte String in diese Datei geschrieben wird.
Das aktuell ausgewählte müsste ja dann UserListe.Text sein oder? |
Schau dir mal in der Hilfe/Library TextFile Reset Rewrite Readln Writeln und eventuell Streams an. Bei manchen Kompos gibts sowas wie SaveToFile LoadFromFile.
|
Ja genau.
Du kannst eine Stringlist anlegen:
Delphi-Quellcode:
Das lesen funktioniert umgekehrt:
procedure WriteToFile;
var slComboItems : TStringlist; begin slComboItems.Create; lsComboItems.Assigen(UserList.Items); lsComboItems.SaveToFile('C:\FileName.txt' {der Dateiname}); slComboItems.Free; end;
Delphi-Quellcode:
Das ist die schnelle Variante, funktioniert auch noch auf mit anderen Varianten.
procedure ReadFromFile;
var slComboItems : TStringlist; begin slComboItems.Create; lsComboItems.LoadFromFile('C:\FileName.txt' {der Dateiname}); UserList.Assign(lsComboItems); slComboItems.Free; end; Hab jetzt kein Delphi angeworfen, ist frei gecodet, also Fehler sind vorbehalten :wink: ! FLOW |
Zum Beispiel folgendermassen:
Delphi-Quellcode:
zum schreiben eines Strings in die Datei, und zum Lesen:
procedure StringInDatei(zeile: string);
var Datei: TextFile; begin AssignFile(Datei,'c:\temp.txt'); ReWrite(Datei); WriteLn(Datei,zeile); CloseFile(Datei); end;
Delphi-Quellcode:
Dabei ist aber folgendes zu beachten. Ich gehe jetzt der Einfachheit halber davon aus, dass Du immer in die Datei temp.txt auf Laufwerk C schreibst. Natürlich kannst Du den Dateinamen auch in einer Variablen übergeben oder was auch immer. Ausserdem übernimmt die Funktion zum Schreiben in die Datei den String und nicht die ComboBox. Auslesen musst Du die also vorher selbst, z. B. über:
function StringAusDatei: string;
var Datei: TextFile; zeile: string; begin AssignFile(Datei,'c:\temp.txt'); Reset(Datei); ReadLn(Datei,zeile); CloseFile(Datei); result := zeile; end;
Delphi-Quellcode:
Die Funktion würde also NICHT aufgerufen, wenn nichts selektiert ist (ItemIndex ist -1, wenn man in der ComboBox nichts auswählt), und wenn etwas selektiert ist, wird der gewählte Text in die Datei geschrieben. Durch das ReWrite wird die Datei übrigens jedesmal ÜBERschrieben. Es wird nichts angehängt!!!
if ComboBox.ItemIndex <> -1 then
StringInDatei(ComboBox.Text); Der Aufruf der Funktion StringAusDatei liefert Dir einfach die erste Zeile der Datei zurück. Das sollte in diesem Fall ja der vorher hineingelegte String sein...
Delphi-Quellcode:
:D
AktUser := StringAusDatei;
Matthias [edit=Daniel B]Delphi-Tags eingefügt. MfG Daniel B.[/edit] |
|
Warum einfach, wenne s umständlich geht:
Delphi-Quellcode:
Combobox1.Items.SaveToFile();
Delphi-Quellcode:
Combobox1.Items.LoadFromFile();
|
@Luckie
Wenn ich es richtig verstanden habe, geht es nicht darum, nur die kompletten Listeninhalte in eine Datei zu speichern, sondern speziell den ausgewählten Eintrag zu speichern, bzw. auszulesen. Daher ein wenig mehr Aufwand. :) Matthias |
Super danke! Funktioniert alles schon :)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:12 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