String to const char* ???
-
Das habe ich auch schon probiert. Ich hatte:
System::IO::File::OpenWrite("Pfad");
so weit, so gut. Aber wie schreibt man denn jetzt den text da rein? OpenWrite öffnet eine vorhandene Datei zum Schreiben, aber als Parameter ist halt nur dieser pfad anzugeben. Dann habe ich nochmal ...File:: gesucht, aber nichts gefunden wo man den Pfad und den text zum schreiben eingeben muss.
Oder welchen Klassenbefehl meinst du?
Kasus Knacktus
-
System::IO::File::OpenWrite("Pfad") gibt einen System::IO::FileStream zurück.
Mit diesem kannst Du die Datei beschreiben. Nach dem benutzen den Stream mit Dispose() freigeben.http://msdn2.microsoft.com/en-us/library/system.io.file.openwrite.aspx
Benutze die MSDN !!
Simon
-
Hallo, Simon.
Auf der msdn Seite war ich schon, aber irgentwie bekomme ich es immer noch nicht hin:
String^ path; path = Application::StartupPath + "Pfad2"; if(!IO::File::Exists(path)) { IO::FileStream^ fs = System::IO::File::Create( path ); //Datei erstellen } else { //Hier soll er den text einer Richtextbox an den Inhalt der Textdatei anhängen. Ich hätte gewusst, wie ich das anhängen mache, aber ich schaffe es irgendwie nicht, den //text überhaupt erstmal in diese datei zu schreiben. }
Die Seite der msdn ist schon gut, aber sie hat mir nicht geholfen
Ich habe es auch schon über FileStream probiert, aber da ich noch nie damit programmiert habe, weiß ich nicht so richtig wie das geht.
Kannst du mir vll noch einmal einen Tipp geben?
Danke,
Kasus Knacktus
-
Schau Dir StreamWriter und StreamReader (BinaryWriter und BinaryReader) mal an.
-
hallo,
Ich habe jetzt nochmal die StramReader + Writer angeschaut, alles überarbeitet und das hier ist dabei rausgekommen:
String^ path; String^ text; path = Application::StartupPath + "Pfad2"; text = "test"; IO::StreamWriter^ file = IO::File::AppendText(path); file->WriteLine(text); file->NewLine; // Kann ich auch weglassen, aber ich wollte schauen was der wirklich bringt :/
Das überprüfen, ob die Datei überhaupt da ist, habe ich wieder rausgenommen, da sie ganz sicher da ist.
Der befehl WriteLine usw. schreibt den text nur in einen Stream, ich weiß, aber wie kann ich denn jetzt den Stream in die Datei einfügen?Ich weiß auch, dass ich das mit euren Tipps schon längst hinbekommen hätte sollen, aber irgentwie ist das wie verhext, ich krigs nicht hin.
ich bitte nochmal um Antworten,
Kasus Knacktus
-
file->WriteLine(text); file->NewLine;
So geht das nicht. NewLine ist ein Property (sogar noch Readonly), das hat gar nichts zur Folge.
So gehts:
file->WriteLine(text); file->WriteLine(file->NewLine);
Simon
-
Der befehl WriteLine usw. schreibt den text nur in einen Stream, ich weiß, aber wie kann ich denn jetzt den Stream in die Datei einfügen?
Der Stream ist mit der Datei verbunden.
Nun musst Du Close() bzw. Dispose() aufrufen damit die Resourcen wieder freigeben werden. Bei der Gelegenheit wird auch gleich der Stream in die Datei geschrieben, falls das noch nicht geschehen ist.Simon
-
Ich verstehe nicht was an der MSDN sooooo schwierig sein soll:
Hier findest Du ein Bsp. (sogar in C++/CLI) welches in ein File schreibt:
http://msdn2.microsoft.com/en-us/library/system.io.file.createtext.aspxSimon
-
Hallo,
Also endlich klappts. ich fasse mir aber ziemlich an den Kopf, wenn ich die Posts von mir sehe. Also ich glaube, ich sollte jetzt erst einmal eine Pause machen und erstmal runterkommen. Vielleicht ne Kur machen oder so.
Danke nochmals und auch vielmals für eure Antworten,
Kasus Knacktus
P.s.: Die msdn ist eigentlich gar nicht so schwer. man muss nur ausgeruht sein
-
Hi, hatte das Problem auch schon öfter (System::String aus WindowsForms-Anwendung(GUI) an ältere/native_C++ Funktion als 'const char*' übergeben) und habs jetzt mal 'manuell' so gelöst:
[code:]
char fn[200]; //maximal 200 Zeichen für filename fn (bei Bedarf einfach erhöhen)
int i;
//[openFileDialog1->FileName] ist eine System::String^ -Variable.
for(i=0; i<openFileDialog1->FileName->Length; i++)
{
fn[i]=(char)openFileDialog1->FileName[i];
}
fn[i+1]='\0'; //mit NULL abschließen![/end-code]
//-> funzt wunderbar...