Datei mit String schreiben und lesen
-
Ich mal wieder *gg*
Ich habe zwei Strings, die ich in eine Datei schreiben und später wieder lesen will.
Die Strings kommen aus einem Edit-Feld.
Da ich vorher noch nicht mit Dateien gearbeitet habe, weis ich nicht wie ich die Datei damit beschreibe.Wenn ich folgende Funktion bastel:
void __fastcall TForm2::setData(String pw, int kid) { fstream file; file.open("kpw.dat", ios::out); file<<pw<<endl; file<<kid<<endl; file.close(); }
kommt folgende Fehlermeldung:
[BCC32 Fehler] KonzernTool.cpp(121): E2094 'operator<<' ist im Typ 'fstream' für Argumente des Typs 'AnsiString' nicht implementiert.Wie bekomme ich das sonst in die Datei
Und wenn ich das dann mal drin habe, wie kann ich das ganze dann wieder in die zwei Variablen reinlesen?
-
Hallo Paddel
einfach geht es z.B. mit einer StringList:
TStringList *Daten; Daten=new TStringList(); Daten->Add("Text z.B. aus Edit"); Daten->Add(Form1->edit->Text); // oder so Daten->SaveToFile("c:\test.txt"); delete Daten;
Mit dem Befehl LoadFromFile dann halt wieder in Strings laden und
dem Edit zuordnen:TStringList *Daten; Daten=new TStringList(); Daten->LoadFromFile("c:\test.txt"); Form1->edit->Text=Daten->Strings[0]; delete Daten;
Falls Du es mit Streams machen möchtest:
AnsiString zFile,z1; Word wWert; TFileStream *Datei; zFile="c:\test.txt"; z1 ="Dein Text im String"; wWert=fmOpenReadWrite; if(FileExists(zFile)==false) { wWert=fmCreate; } // normaler Openmodus (sonst neu erzeugen) Datei=new TFileStream(zFile,wWert); // Datei öffnen zum Lesen/Schreiben Datei->Seek(0,soFromEnd); // Zeiger ans Ende setzen Datei->Write(z1.c_str(),z1.Length()); // und anhängen delete Datei; // Datei freigeben
Gruss Stefan
-
Hallo
Ich mache es so:
schreiben:TStringList *Daten= new TStringList; Daten->Add(Edit1->Text); Daten->Add(Edit2->Text); Daten->SaveToFile("Meine_Datei"); delete Daten;
und lesen:
TStringList *Daten= new TStringList; Daten->LoadFromFile("Meine_Datei"); Edit1->Text=Daten->Strings[0]; Edit2->Text=Daten->Strings[1]; delete Daten;
wNW
-
zu spät ...
wNw
-
supi, danke euch beiden
-
In der Hilfe zu AnsiString steht auch wie man den erst genannten Fehler vermeidet.
Hinweis: Wenn Sie die Streaming-Operatoren von C++ (<< und >>) mit dem Typ AnsiString nutzen möchten, müssen Sie vor #include <dstring.h> die Anweisung #include <iostream> oder #define VCL_IOSTREAM angeben. Verwenden Sie die include-Anweisung mit vcl.h oder system.h, geschieht dies automatisch. Die Operatoren werden dabei folgendermaßen definiert:
ostream& operator << (ostream& os, const AnsiString& arg);
istream& operator >> (istream& is, AnsiString& arg);