Problem beim schreiben in Datei
-
Hallo,
ich habe folgendes vor und bekomme es aber nicht hin. Ich möchte aus Textfeldern der Gui einen, bzw. mehrere Strings nehmen und in einen Datei schreiben.

Mein Problem ist das put immer ein char will und ich nicht weis wie ich ihm das geben soll.
_________________________
thx cobra
-
code?
-
cobra schrieb:
Textfeldern der Gui
Am besten du nennst uns deine Entwicklungsumgebung (BCB,VC++) und lässt dich dann ins richtige Forum verschieben...
Ich will ja nicht zuviel verraten aber:
string text; char *sinn = text.c_str();Gibt die den String als char* zurück;
Vielleicht hilfts ja
-
Hier der Code ich arbeite mit Borland,
if (Form1->Firma->Text==""){ MessageDlg("Bitte tragen Sie einen Firmennamen ein!", mtError, TMsgDlgButtons() << mbOK, 0);} else{ string Zieldateiname = "test.txt"; ofstream Ziel(Zieldateiname.c_str(), ios::binary|ios::out); if(!Ziel) { // ok. Datei existiert nicht. Neu erstellen Ziel.clear(); Ziel.open(Zieldateiname.c_str(), ios::out); if (Ziel.is_open()) { // mit Datei arbeiten } } MessageDlg(" Datei wurde erstellt.", mtInformation, TMsgDlgButtons() << mbOK, 0);}; }und möchte den Text aus Firma in die Datei bekommen und einen Zeilen umbruch in der Datei erzeugen.
_____________________
thx cobra
-
ich glaube jede gui hat ihre eigene string-klasse
also musst du das örgednwie konvertieren.
schau mal in der doc nach.
cu
-
Wenn du in der Datei einen Zeilenumbruch willst darfst du sie nicht binär öffnen!
ofstream Ziel(Zieldateiname.c_str()) Ziel <<(Form1->Firma->Text) <<endl;Ich hoffe mal die <<-Operatoren sind für AnsiStrings überladen. Kann es jetzt leider nicht testen, weil ich nicht unter Windows bin.
-
Habe da mal paar Fragen:
if (Form1->Firma->Text==""){ MessageDlg("Bitte tragen Sie einen Firmennamen ein!", mtError, TMsgDlgButtons() << mbOK, 0);} else{ string Zieldateiname = "test.txt"; ofstream Ziel(Zieldateiname.c_str(), ios::binary|ios::out);Wenn hier nichts eingegeben wurde dann wird der else-Block ja nicht ausgeführt und somit auch kein string namens Zieldateiname definiert und auch keine Datei geöffnet..
Dann geht's ja im Code hierhin weiter:if(!Ziel) { // ok. Datei existiert nicht. Neu erstellen Ziel.clear(); Ziel.open(Zieldateiname.c_str(), ios::out); }Dann steht da was von Ziel und auch in dem Block Zieldateiname die es aber doch gar nicht gibt

Machts dann nicht CRASH

-
Hallo,
deinen Vorschlag probiert und er funktioniert nicht. Bekommen dann folgenden Fehler:
[C++ Fehler] Unit1.cpp(40): E2094 'operator<<' ist im Typ 'ofstream' für Argumente des Typs 'AnsiString' nicht implementiert
Habe es auch mal mit einem String Probiert und der wird in der Datei nicht angezeigt.
Aber trozdem danke für die Hilfe bis hier her.
__________________
cobra
-
weiß nich ob ich was verwechsel!
Aber ein Textfeld in Borland ist doch zum Beispiel ein RichEdit!Das hat doch die Methode SaveToFIle bei Lines!
Nimm die integrierten funktionen!Wenn nur bestimmter text,. dann hat es auch noch SelText!
oder verwechsel ich jetzt was?
-
cobra schrieb:
Hallo,
deinen Vorschlag probiert und er funktioniert nicht. Bekommen dann folgenden Fehler:
[C++ Fehler] Unit1.cpp(40): E2094 'operator<<' ist im Typ 'ofstream' für Argumente des Typs 'AnsiString' nicht implementiert
Das Stichwort hier heißt: AnsiString::c_str()