Datei Auslesen und Schreiben
lima-city → Forum → Programmiersprachen → Delphi & Pascal
arbeiten
beispiel
code
datei
fix fertiges programm
helfen
http
inhalt
jemand
lese
schleife
setzen
stadt
string
test
text
textdatei
verwendung
wahl
ziehen
-
Hey Leute kann mir jemand helfen wie man Text Dateien öffnent und schreiben kann? Also es soll unter art Eigenschaften und dahinter kommt Wert kommen. Kann mir halt bei dem jemand helfen?
Die Textdatei sollte folgend aussehen etwa:
Name=\"Test\"
Vormame=\"Hans Josef\"
Stadt=\"Münster Max\"
Kann einer von euch evtl mir ein Beispielprojekt machen oder den Code einfach zusammen machen? also es soll der inhalt aus Textfeldern gelesen werden und in Labelfelder eingetragen.
Danke schon ma im vorraus -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Also an und für sich ist das ganz einfach. Die Frage ist wohl, wie komfortabel willst du das haben, und welche Fehler willst du ausgrenzen?
Je nachdem, wie gut du dich auskennst, würde ich folgende Möglichkeiten in Betracht ziehen:
1.) Du kannst beispielsweise den Text in ein (nach Wahl unsichtbares) Memo-Feld geben, und mit der Methode TMemo.SaveToFile(\'C:\\testfile.txt\') abspeichern.
2) Mit den Dateifunktionen AssignFile, Write/WriteLn, CloseFile arbeiten
3) Mit den Dateifunktionen FileOpen, FileRead, FileWrite, CloseFile arbeiten.
Sämtliches ist mit Beispielen in der Delphi-Hilfe zu finden! Ein fix fertiges Programm möchte ich hier nicht extra schreiben ... Probier mal, dann helf\' ich dir jederzeit weiter!
Achtung: Bei allen Möglichkeiten mußt du dich selbst um die Fehlerbehandlung kümmern (D.h. wenn die Datei schon existiert und überschrieben werden soll, ...) -
es soll an sich was ganz einfaches sein. also muss nicht besondert verschlüsselt oder so sein. also irgendwie fast wie ne ini datei aussehen. Aber ich guck mir das morgen mal an. aber vll hat jemand anders schon was, was er mir unter umständen hier rein stellen würde.
MfG
Michael -
Unter Verwendung von 1) ginge es so:
ein TMemo auf der Form platzieren, Visible auf False setzen,
Deinen Text ins Memo geben:
Memo1.Lines.Clear;// erst löschen
Memo1.Lines.Add(\'Name=\"Test\"\');
Memo1.Lines.Add(\'Vormame=\"Hans Josef\"\');
Memo1.Lines.Add(\'Stadt=\"Münster Max\"\');
Memo1.SaveToFile(\'C:\\Testfile.txt\');//Oder Memo1.Lines.SaveToFile...
Lesen:
Memo1.LoadFromFile(\'C:\\TestFile.txt\');
Dann eine Schleife, etwa:
for i := 0 to (Memo1.Lines.Count-1) do
begin
St := Memo1.Lines;
// mit dem String kannst du nun machen was du willst:
// z.B.
if UpperCase(Copy(St, 1, 4)) = \'NAME\' then ...
else if ...
end;
Ansonsten 2)
http://www.festra.com/eng/snip02.htm
hth
Beitrag geändert: 8.1.2008 22:59:27 von burgi -
Oder man erstellt gleiche eine richtige ini-Datei mit WritePrivateProfilestring() über die Windows API.
Beispiele:
http://www.michael-puff.de/Developer/Delphi/Tutorials/Win32API_Tutorials_pdf.pdf
http://www.tsql.de/c_plus_plus/c++_ini_file_datei_schreiben.php
-
burgi: Das ist definitiv nicht gut, was du da tust ;)
Schön, es GEHT, das ist richtig...
Aber elegant bzw. im Sinne des Erfinders ist das NICHT ;)
Dann sollte man mit einer TStringList arbeiten:
//Deklaration procedure SpeichereText(Text, Datei:string); var SL:TStringList; begin SL:=TStringList.Create; SL.Text:=Text; SL.SaveToFile(Datei); SL.Free; end; //Beispielaufruf: SpeichereText('Ich bin klein,'+#13#10 +'Mein Herz ist schmutzig,'+#13#10 +'Ich könnt'' schon wieder,'+#13#10 +'Ist das nicht putzig?', 'C:AUTOEXEC.BAT');
Sollte man nicht 1:1 übernehmen ;)
Edith: OK, man kann auch
burgi schrieb:
Mit den Dateifunktionen AssignFile, Write/WriteLn, CloseFile arbeiten
3) Mit den Dateifunktionen FileOpen, FileRead, FileWrite, CloseFile arbeiten
Ooooder auch gleich die Klasse TIniFile benutzen, cbhp:
uses (...), IniFile{s?}; interface (...) var IF:TIniFile; begin IF:=TIniFile.Create; //Irgendwas halt ;) IF.Free; end;
Beitrag geändert: 27.11.2008 22:18:18 von ldericher -
Zur TStringlist ist noch zu sagen, dass man auch durchaus mehrere Zeilen schreiben kann z.B. mit
SL.Add(Text); SL.Add(mehrText); ...
Das Problem ist, dass man dann beim lesen der Datei wieder alle Strings der TStringlist durchgehen
muss. Für eine Textdatei mit dem InhaltName=Test Vorname=Hans Josef Stadt=Münster Max
sähe die Funktion dafür aus wie folgt:function Lese(Text,Datei : string) : string; var SL:TStringList; i:Integer; begin SL:=TStringList.Create; SL.LoadFromFile(Datei); for i:=0 to Sl.Count-1 do begin if copy(Sl.Strings[i],1,length(Text))=Text then begin Result:=copy(Sl.Strings[i],length(Text)+2,length(Sl.Strings[i])) end; end; end; //Der Aufruf sähe dann so aus: Name:=Lese('Name','C:test.txt'); //Die Variable Name hätte dann den Wert 'Test'
Mit den Inifiles kann man sich das sparen.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage