Mit Visual C++ etwas in Dateien kopieren
-
Hallo!
Ich habe vor einiger Zeit hier nachgefragt wie man mit c etwas einfacher weise in eine Datei schreibt, damals habe ich das anschließend mit fstream ofstream und ifstream gemacht, aber da habe ich noch mit einer Konsolenanwendung gearbeitet.
Nun inetressiert mich eigendlich nur noch die Visuelle Programmierung.
Also in der Schule sollen wir Datenlogger schreiben, wobei von einem uController Daten über die serielle Schnittstelle zum PC geschickt werden, und dort ausgewertet werden sollen.
Die Programmierung des 8051 ist eigendlich problemlos (bzw. Fehler sind logisch nachvollziehbar für mich, Programmierung findet dort in C statt).Nur das Windows Programm macht mir Kopfzerbrechen und ich dachte mir ich könnte mich in den Osterferien schick einarbeiten, aber...
Für den Anfang wollte ich alte Programme auf das Visuelle C++ umstricken, und wollte ganz klein anfangen
Einen Zeile Text in einer Datei schreiben.
Und das lässt er nicht zu!Und zwar will ich aus einem TEdit Feld die Eingabe speichern.
Verarbeiten und ausgeben auf ein Label ist OK, aber speicher ist nicht möglich!
Also bei mir
void __fastcall TForm1::Button1Click(TObject *Sender)
{
String dat;
ofstream datei1 ("daten.txt",ios::out);
dat = Edit1->Text;
datei1 << dat;
}Dabei kommt folgende Fehlermeldung:
[C++ Fehler] Unit1.cpp(37): E2094 'operator<<' ist im Typ 'ofstream' für Argumente des Typs 'AnsiString' nicht implementiert.
eine = Zuweisung geht auch nicht.
Was kann ich da tun?
-
Versuch es mal so:
void __fastcall TForm1::Button1Click(TObject *Sender) { String dat; ofstream datei1 ("C:\\daten.txt",ios::out); dat = Edit1->Text; datei1 <<dat.c_str(); }Mfg
daniel1986
-
Danke!!
hat auf anhieb geklappt!!Wie kommt man auf sowas?
In keinen meine Lektüren steht sowas ähnliches drin.Was hast du dir den angeschaut?
-
c_str() returned dir einen char*, und dass man dass mit char* machen kann ist auch in Büchern kein Geheimnis...
-
Noch etwas kürzer
void __fastcall TForm1::Button1Click(TObject *Sender) { ofstream datei1 ("C:\\daten.txt"); datei1 << Edit1->Text.c_str(); }
-
Danke Euch!
Aber irgendwie versteh ich leider den Hintergrund nicht, obwohl es jetzt funktioniert.Das Text Feld gibt mir doch einen String raus, warum kann ich diesen denn nicht direkt in eine Datei schreiben?
Wenn ich den String test= "hallo" nehme, kann ich ihn problemlos hineinschreiben.Wo liegt da genau der Unterschied?
-
Der Operator << von ofstream akzeptiert einfach keine AnsiString-Objekte (ist nicht dafür überladen), dafür aber char*. Deswegen must du hier die Memberfunktion c_str() von AnsiString nehmen, welche ein char* (eigentlich const char*) zurückliefert. Schau doch einfach mal in die Hilfe zu AnsiString::c_str sowie ofstream.
-
OK, Danke, mach ich.
bis denn