LPSTR to string
-
RedEagle schrieb:
Es wird auch kompiliert, aber das Programm stürtzt ab.
mach mal einen breakpoint direkt auf der zuweisung und guck dir 'daten' an.
-
net schrieb:
mach mal einen breakpoint direkt auf der zuweisung und guck dir 'daten' an.
hä??
Ich habe DEV-CPP und noch nie mit BreakPoints gearbeitet.
-
Hm, ich kenne die IDE nicht genau - gibt es da keinen Debugger?!
Ansonsten könntest du daten auch einfach mal mit einer MessageBox ausgeben:MessageBox(NULL,daten,"",0);
-
Hab ich gemacht, und in daten ist das gespeichert, was auch im Edit-feld zu sehen ist. (d.h. mit "daten" ist alles ok)
Es kann ja eigentlich nur bei der Übergabe irgendein Fehler auftreten
Hier mal die Ganze Funktion:
LPSTR daten; string text; DWORD Lange; Lange = GetWindowTextLength(hwndEdit); daten = (LPSTR)GlobalAlloc(GPTR, Lange + 1); GetWindowText(hwndEdit, daten, Lange + 1); MessageBox(NULL,daten,"",0); text = daten; //FEHLER for(int i = 0; i < text.size(); ++i) { text[i] = text[i] ^ pw[i % pw.size()]; } ofstream out; out.open(file.c_str()); out << text; out.close(); GlobalFree(daten);
-
wieso verwendest du da denn nicht auch const char und c_str() ?
-
crazychicken schrieb:
wieso verwendest du da denn nicht auch const char und c_str() ?
...oder wieso überhaupt 'string'
-
Alos:
1. LPSTR daten; muss ja sein, oder??
2. Es muss ja auch mit string gehen, oder??
3. const char?? ich will aber ne Variable, keine Konstante
=> char ist umständlicher, bei den Datenmengen, da der Text ja 2 Zeichen, oder 2000 Zeichen haben kann
-
RedEagle schrieb:
=> char ist umständlicher, bei den Datenmengen, da der Text ja 2 Zeichen, oder 2000 Zeichen haben kann
Aber du hast dir doch eh schon für ein char-Array Speicher besorgt und dort die Daten drin

-
LPSTR = char??
oder was meinste??
-
LPSTR ist nichts anderes als ein char*
typedef CHAR *LPSTR;siehe auch: http://msdn.microsoft.com/library/en-us/winprog/winprog/windows_data_types.asp
-
LPSTR daten; //string text; DWORD Lange; Lange = GetWindowTextLength(hwndEdit); daten = (LPSTR)GlobalAlloc(GPTR, Lange + 1); GetWindowText(hwndEdit, daten, Lange + 1); //text = daten; //FEHLER /* for(int i = 0; i < text.size(); ++i) { text[i] = text[i] ^ pw[i % pw.size()]; }*/ for(int i=0; i<sizeof(daten); ++i) { daten[i] = daten[i] ^ pw[i % pw.size()]; } ofstream out; out.open(file.c_str()); out << daten; out.close(); GlobalFree(daten);Jetzt stürtzt das Programm bei der for-schleife ab

-
sizeof(daten) ist sizeof(char*) und damit immer 4.
Warum benutzt du eigentlich GlobalAlloc und nicht new?
btw: In C++ deklariert man normalerweise seine Variablen dort, wo man sie braucht. Nicht alle untereinander am Anfang der Funktion, das ist C.
edit: nochwas, out.close() ist unnötig. Das erledigt der Destruktor.
-
wie kann ich denn das string.size() in bei chars verwnden??
-
lstrlen
