Problem bei Stringweitergabe
-
tegg schrieb:
wie denn das jetzt ?
[cpp]void sysani(....,const **System::String ^**Speicher)
*System::String ^Speicher_aaa= Speicher +"\\Teil.aaa";
char filename = (char)(void)Marshal::StringToHGlobalAnsi(Speicher_aaa);
fs = fopen(filename, "w");
[/cpp]Die fettmarkierten Dinger sind aber C#-Code
-
muss ich jetzt die ganze klick-kacke neu zusammenbauen ? oder kann ich das irgendwie konvertieren ? Aber in meinen Eigenschaften ist es ein C/C++ Programm....
ich schreib jetzt mal den string in eine datei und schau mal was da rauskommt
-
tegg schrieb:
void sysani(....,const System::String ^Speicher) System::String ^Speicher_aaa= Speicher +"\\Teil.aaa"; char* filename = (char*)(void*)Marshal::StringToHGlobalAnsi(Speicher_aaa); fs = fopen(filename, "w");
so klappt das kompilieren
Also wenn er sowas "System::String ^" übersetzen kann, dann hast du höchstwahrscheinlich ein "C++/CLI" Projekt angelegt. Ich kenne mich zwar in der MFC nicht aus, aber ich habe so meine Zweifel, dass es dort diese Konstruktion "System::String ^" gibt...
Die Experten mögen mich korrigieren, wenn ich falsch liege.
-
hmm...also Problem ist die char *filname ist einfach nur ein "H"
-
Zeig mal deinen Code. Was hast du denn jetzt genau gemacht?
Edit: Welche Art von Projekt hast du denn jetzt erzeugt?
-
Es ist ein C++/CLI Projekt. Das sieht man an den Einstellungen: "Common Language Runtime Support": steht auf jedefall nicht auf "None"...
-
bin schon wieder weiter... bin jetzt bei converttochar im form1.h am probieren und ein char zu übergeben
es sollte ein CLR - Windows Form Anwendung sein
-
Jochen Kalmbach schrieb:
Es ist ein C++/CLI Projekt. Das sieht man an den Einstellungen: "Common Language Runtime Support": steht auf jedefall nicht auf "None"...
Reine MSIL CLR Unterstüzung /clr:pure
-
Wenn du CLR machst, dann bist du aber hier im MFC(C++)-Forum falsch
-
okay...stimmt, ich bin da noch neu in dem Gebiet, sorry...könnte mich bitte jemand verschieben
-
Dieser Thread wurde von Moderator/in Martin Richter aus dem Forum MFC (Visual C++) in das Forum C++/CLI mit .NET verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Wenn Du mit C++/CLI programmierst, benutze das .NET Framework - char Zeiger haben da meistens nichts zu suchen.
-
Evtl. solltest du sogar überlegen, C# zu programmieren...
Da du ja ganz offensichtlich noch nicht genau weißt was du willst, bist du frei in deinen Entscheidungen.
-
joa, eigentlich hätte ich gerne eine gui für mein c programm
char Speicher_aaa[]="D:\\Teil1.aaa"; char Speicher_bbb[]="D:\\Teil2.bbb"; fopen_s(fs,Speicher_sys, "w"); fprintf(fs,"blablablubb und noch vielviel mehr\n");
da die erstellten Dateien im selben Ordner sein müssen, habe ich über FolderBrowserDialog() einen Pfad, den ich um die Dateinamen erweitern möchte und dann einfach nur text in Dateien schreiben möchte...
-
error C2664: 'sysani': Konvertierung des Parameters 13 von 'wchar_t' in 'const wchar_t *' nicht möglich
wchar_t Speicher_aaa=Convert::ToChar(textBox1->Text + "\\Teil.aaa"); wchar_t Speicher_bbb=Convert::ToChar(textBox1->Text + "\\Teil.bbb");
soweit bin ich jetzt, so nah wie nie zuvor... jedoch find ich nix wegen kovertierung
-
neuer Versuch, neues Pech....
diesmal wieder mit convert von System::string --> *char nach Jochen Kalmbachs Anleitung http://www.c-plusplus.net/forum/158664
egal welche Variante ich bekomme nun mehrer hundert Fehler in der winbase.h
1>C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\winbase.h(4389) : error C2872: 'FILETIME': Mehrdeutiges Symbol 1> kann 'C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\windef.h(377) sein: _FILETIME FILETIME' 1> oder "c:\windows\microsoft.net\framework\v2.0.50727\mscorlib.dll : System::Runtime::InteropServices::FILETIME" 1>C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\winbase.h(4390) : error C2872: 'FILETIME': Mehrdeutiges Symbol 1> kann 'C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\windef.h(377) sein: _FILETIME FILETIME' . . .
Aufruf
//const char *Speicher_aaa=StringConvA(Convert::ToChar(textBox1->Text + "\\Teil1.aaa")); std::string Speicher_aaa = marshal_as<std::string>(Convert::ToChar(textBox1->Text + "\\Teil1.aaa")); //später Speicher_aaa.c_str() //const char *Speicher_bbb=StringConvA(Convert::ToChar(textBox1->Text + "\\Teil.bbb")); std::string Speicher_bbb = marshal_as<std::string>(Convert::ToChar(textBox1->Text + "\\Teil.bbb"));