Archiv verlassen und diese Seite im Standarddesign anzeigen : [C++]GetPrivateProfileString(error..)
Hey, wollte mal fragen, wie ich den Fehler in diesem QC behebe
#include "windows.h"
char EinPfad[500];
char Nochwas[500];
char Test[500];
DWORD destSize;
destSize=500;
GetPrivateProfileString("common","C:\\Users\\","NULL",EinPfad,destSize,"test.ini");
//GetPrivateProfileString("common","Nochwas","NULL",Nochwas,destSize,"test.ini");
//GetPrivateProfileString("bla","test","NULL",Test,destSize,"test.ini");
"EinPfad" steht für einen beliebigen Pfad .. c:\\ ..
error C2664: 'GetPrivateProfileString': Konvertierung des Parameters 1 von 'const char [7]' in 'LPCTSTR' nicht möglich
Hab dein Source mal bissel Fixed, jetzt funktioniert es.
Glaube allerdings du hast den aufbau einer Ini-Datei nicht ganz verstanden.. wäre das möglich?
Wayne hier der Source:
#include <iostream>
#include <windows.h>
using namespace std;
char EinPfad[500];
char Nochwas[500];
char Test[500];
DWORD destSize=500;
int main(){
GetPrivateProfileString("common","Part2","NULL",EinPfad,500,"./test.ini");
cout<<EinPfad<<endl;
cin.get();
}
Und hier die test.ini
[common]
Part2=Dein_Pfad
ok+ danke, ich geh mal werkeln ;)
EDIT:
hab deine edit gelesen, muss es nur in eine visual c++ anwendung einbauen
also:
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
char EinPfad[500];
char Nochwas[500];
char Test[500];
DWORD destSize=500;
GetPrivateProfileString("common","Part2","NULL",EinPfad,500,"./test.ini");
}
aber dann tritt wieder der convert-fehler auf:
error C2664: 'GetPrivateProfileString': Konvertierung des Parameters 1 von 'const char [7]' in 'LPCTSTR' nicht möglich
1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
Poste mal deinen gesammten Source auf pastebin.com oder so, kann mit deinem bisherigen Source nicht viel anfangen, der Fehler scheint wo anders als in dem Code den du gepostet hast zu liegen :confused:
hier das just-funktion project
http://www.file-upload.net/download-4309542/INI-Ausleser.rar.html
Ich Programmier sonst in Devc++ und nicht mit Visual C++ deswegen hab ich nicht sonderlich viel Ahnung davon, kann dir aber erklären was den Fehler verursacht.
GetPrivateProfileString wurde von Visual C++ dekladiert, die richtigen Api funktionen heißen eigendlich GetPrivateProfileStringW oder GetTPrivateProfileStringA ,jeweils für Unicode und jemals ohne Unicode. Jetzt kannst du Theoretisch vor deine Strings (z.b "Part2" jeweils ein L setzen,also z.b L"Part2") um das als Unicode zu kennzeichnen . So ließ es sich bei mir dann Compilieren, das problem dabei ist jedoch das es nen Lesefehler gibt ("Geschützter Systemspeicher" bei ner ini datei, ja ne is klar).. Schau einfach mal, bekommst du sicher besser hin als ich.
Wahrscheinlich hast du Unicode als Kodierung eingestellt. Entweder du verwendest auch Unicode oder du stellst es in den Projekteinstellungen von "Unicode" auf "Multibyte".
wie macht man das ? :* habs noch nicht so mit änderungen am compiler <..< hab bisher immer die standarteinstellungen benutzt ..
Weiß ich jetzt nicht genau. Bei Projekt -> Projekteintellungen oder so.
Dann öffnet sich ein Fenster und ich glaube gleich im Standard-Tab kann man das ändern.
Oben auf Project->Properities->Configuration Properities->Characterset
http://www10.pic-upload.de/28.04.12/ah4ft1nc5.png
hmmm da sind keine char einstellungen
Du sollst auch auf "Konfigurationseigenschaften" und nich auf Konfiguration! *kopfschüttel*
http://www.a-m-i.de/tips/strings/strings.php
probier deinen Stringparametern mal ein L voranzustellen.
Also
L"common"
http://www.a-m-i.de/tips/strings/strings.php
probier deinen Stringparametern mal ein L voranzustellen.
Also
Hab ich ihm schon empfohlen :D
Sollte das alles nichts helfen kannst du ja aber noch versuchen die Einstellungen vorzunehmen, und dann jeweils ein LPCTSTR davor zu setzen wie du es z.b bei einem DWORD machen würdest. So z.b -> (DWORD)variable
damit das ganze sich Compilieren lässt. Mit Devc++ hättest du das ganz einfach machen können ohne die ganzen Fehler , nur kannst du da eben nicht die Fensterchen zusammenklicken sondern musst es selbst coden :lol
Grüße
Du sollst auch auf "Konfigurationseigenschaften" und nich auf Konfiguration! *kopfschüttel*
"Konfigurationseigenschaften" sieht genau gleich aus, wie im pic die Konfiguration
edit: wenn du das im pic meinst ..
Entweder du machst etwas falsch oder du hast ne falsche Version.. Sicher das du die 2010er Visual C++ hast?Bei der 2008er weiß ich nicht obs die Einstellung dort gibt.
http://img269.imageshack.us/img269/8563/visualc.png
ich hab Microsoft Visual C++ 2010 Express auf Deutsch und da find ich sowas, wie in deinem Pic nicht
PS: lol bin seit 3 Tagen nicht auf die Page gekommen, idk warums net ging
Das ging jedem so, Ddos und so..
ich hab Microsoft Visual C++ 2010 Express auf Deutsch und da find ich sowas, wie in deinem Pic nicht
Wirklich nicht? Rechtsklick auf das Projekt -> Eigenschaften.
http://saved.im/mtg3mtewdzbp/unbenannt.png
Glaube er stellt sich einfach nur doof an :neutral:
Wenn du möchtest, kann ichs dir Morgen oder so mal per Teamviewer schauen ;)
Sowie ich das sehe macht GAFO (http://free-hack.com/member.php?u=77132) nen Rechtsklick auf die Projektmappe und nicht auf das Projekt. ;)
Auf psysnake screen sieht mans gut, auf "tutzu" klicken, nicht auf "Projektmappe tutzu".
MfG Leange
Man kann auch oben in der Statusleite auf "Projekt(e)" klicken,und dann auf Projekteigenschaften - öffnet das selbe fensterchen.
hat geklappt !! einfach Visual c++ neu installiert LOL <..< :idee:eek::idee
jetzt ist nur noch der Punkt ungeklärt, wie man in
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
char EinPfad[500];
char Nochwas[500];
char Test[500];
DWORD destSize=500;
GetPrivateProfileString("common","Part2","NULL",EinPfad,500,"C:\Users\Lightning\Desktop\/test.ini");
}
EinPfad mit dem Text einer z.B. TextBox gleichsetzt, denn
tb1->Text = EinPfad;
// bzw
tb1->Text(EinPfad);
geht nicht
sicher das du es richtig benannt hast?Ich hatte anfangs das Problem das ich nicht auf Groß/Kleinschreibung geachtet hatte und es dann deswegen nicht klappte.
rror C2664: 'void System::Windows::Forms::Control::Text::set(System: :String ^)': Konvertierung des Parameters 1 von 'char [500]' in 'System::String ^' nicht möglich
1> Ursache: Konvertierung von 'char *' in 'System::String ^' nicht möglich
das müsste man iwie anders machen als, wie in dem bsp
steht ja schon da was zu machen ist
"Konvertierung von 'char *' in 'System::String ^' nicht möglich"
Sprich du musst ein String und kein char* benutzen damit es funktioniert, da ein String erwartet wird. Oder du wandelst es bevor du es Anzeigst dann in ein String um (ging glaube ich mit variable.c_str();) ;)
ja, selbst wenn ich da statt nem char array nen system-string benutze, also "String" kommt bei :
String EinPfad;
1>c:\users\lightning\documents\visual studio 2010\projects\na\ini-ausleser\ini-ausleser\Form1.h(96): error C3149: "System::String": Dieser Typ kann ohne "^" der obersten Ebene hier nicht verwendet werden.
1>c:\users\lightning\documents\visual studio 2010\projects\na\ini-ausleser\ini-ausleser\Form1.h(102): error C2664: 'GetPrivateProfileString': Konvertierung des Parameters 4 von 'System::String ^' in 'LPTSTR' nicht möglich
Powered by vBulletin® Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.