GetWindowTextLength stürtzt ab
-
Tach
LPSTR daten; DWORD TextLange; TextLange = GetWindowTextLength(hwndEdit); GetWindowText(hwndEdit, daten, TextLange+1); //Hir stürtzt das Programm ab :(Warum stürtzt "GetWindowsText()" ab??
(das +1 habe ich geschrieben, weil ich das so, in nem anderen Programm gesehen habe, aber wenn ich es weglasse, stürtzt es Trotzdem ab)!!Die variable "daten" wird Trotz Absturtz "gefüllt".
Wenn ich "GetWindowText()" in Kommentare setzte, gibt's kein Absturtz, deshalb bin ich mir sicher, das es an der Funktion liegt
-
Du hast für Daten keinen Speicher angefordert. Dann schreibt die Funktion ins Nirvana und das war's. Also sowas wie
Daten = malloc (TextLange);
machen. Free hinterher nicht vergessen.
-
invalid conversion from `void*' to `CHAR*'
geht nciht
Habe sowas ncoh nie gemacht
geht das so mit dem free??
free(Daten);
??
-
Wenn du einen Smart-Pointer verwendest, z.B. auto_ptr aus der STL gehst du der Gefahr von Memory Leaks aus dem Weg.

#include <memory> using namespaces std; void dummy() { ... DWORD length = GetWindowTextLength(hwndEdit) + 1; auto_ptr<char> buffer(new char[length]); GetWindowText(buffer.get(), length); ... }mfg JJ
-
Ich kappier den Code überhaupt nicht.
so habe ich es jetzt im code stehn:
LPSTR daten; //DWORD TextLange; //TextLange = GetWindowTextLength(hwndEdit); //daten = malloc (TextLange); DWORD TextLange = GetWindowTextLength(hwndEdit) + 1; auto_ptr<char> buffer(new char[TextLange]); //GetWindowText(buffer.get(), length); //PUNKT AUnd es Stürtzt ab.
Wenn ich PUNKT A nciht in Kommentare setzte, wird garnicht erst kompiliertalso die Lösung von "7H3 N4C3R" gefällt mir besser, da ich das halbwegs verstehe, und auch später mal einsetzen kann.
-
Habs jetzt so gemacht:
daten = (LPSTR)GlobalAlloc(GPTR, TextLange + 1);(ich habe auch den Speicher wieder Ffreigegeben

-
...oder einfach über new und delete[]

-
stimmt. Daran habe ich garnicht gedacht
