![]() |
Re: [non VCL] - Fehler bei WM_GETTEXT
Funzt wieder nicht :(
Jetzt habe ich es ohne Dialoge versucht.
Delphi-Quellcode:
Funktioniert...bis 8 Zeichen -.-
Len := SendMessage(hWndEdit, WM_GETTEXTLENGTH, 0, 0);
SendMessage(hWndEdit, WM_GETTEXT, Len, Integer(@s)); SendMessage(hWnd, WM_SETTEXT, Len, Integer(@s)); //Edit: Aha mir ist ein Licht aufgegangen :mrgreen: Scheint daran zu liegen, dass ein PAnsiChar nur 8 Bytes (Bits?) oder so hat (grobe Vermutung :)) Wenn s: Array [0..255] of Char; dann klappt alles! |
Re: [non VCL] - Fehler bei WM_GETTEXT
Zitat:
So:
Delphi-Quellcode:
Len := SendMessage(hWndEdit, WM_GETTEXTLENGTH, 0, 0);
SetLength(s, Len+1); SendMessage(hWndEdit, WM_GETTEXT, Len, Integer(@s[1])); // ... SendMessage(hWnd, WM_SETTEXT, Len, Integer(@s[1])); |
Re: [non VCL] - Fehler bei WM_GETTEXT
es geht sogar einfacher :mrgreen:
Delphi-Quellcode:
Es funktioniert auch wenn s: Array [0..1] of Char; is, was ich irgendwie nich verstehe ^^
var
s: PChar; //... edit1 := GetDlgItem(hwnd, 1); edit2 := GetDlgItem(hwnd, 2); Length := SendMessage(edit1, WM_GETTEXTLENGTH, 0, 0) + 1; SendMessage(edit1, WM_GETTEXT, Length, Integer(@s)); SendMessage(edit2, WM_SETTEXT, Length, Integer(@s)); |
Re: [non VCL] - Fehler bei WM_GETTEXT
Ich würde es aber niemals so irgendwo verwenden, nimm einfach nen String und SetLength().
Meine Vermutung: Windows schreibt einfach in irgendeinem Speicher hinter dem Array [0..1] of Char weiter. Und wenn da zufällig was liegt, was wichtig ist, na dann gute Nacht. |
Re: [non VCL] - Fehler bei WM_GETTEXT
Zitat:
Also wie gesagt, wenn du meinst, daß du es besser weißt, mach es selber, aber eröffne bitte ein Thema in K&T wo du dein Programm vorstellst, damit alle gewarnt sind. @scp: So ist es! |
Re: [non VCL] - Fehler bei WM_GETTEXT
Zitat:
Ich hab nicht behauptet, dass ich es besser weiß. Ohne eure Hilfe wär ich nie so weit gekommen. Es sind alles ganz normale Aussagen und bei mir tickt jeder völlig durch. Habt ihr alle was gegen mich oder so? Ich versteh das mit dem Pointer auch nicht. Du hast es in deinen Quelltexten oben genau so gemacht Zitat:
//Edit:
Delphi-Quellcode:
So gehts es jetzt.
var
Text: String; ... edit1 := GetDlgItem(hwnd, 1); edit2 := GetDlgItem(hwnd, 2); Length := SendMessage(edit1, WM_GETTEXTLENGTH, 0, 0) + 1; SetLength(Text, Length); SendMessage(edit1, WM_GETTEXT, Length, Integer(PChar(Text))); SendMessage(edit2, WM_SETTEXT, Length, Integer(PChar(Text))); Und nochmal: Ich freue mich über eure Hilfsbereitschaft und finde es schade, dass sich manche durch irgendwelche Sachen sofort aufn Schlips getreten fühlen. Ich hab mich einfach nach dem Codeschnippsel gerichtet, wo Pointer verwendet wurden, es hat funktioniert und war etwas kürzer als das Beispiel. Also wollt ich der Allgemeinheit mitteilen, dass es einfacher geht, weil ich es für korrekt gehalten habe. Wenn du das jetzt innen falschen Hals bekommen hast, dann werd ich mich wohl nächstes Mal deutlicher ausdrücken... //Edit2: Tippfehler ... |
Re: [non VCL] - Fehler bei WM_GETTEXT
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Was du gemacht hast, ist, einen Pointer auf einen (nicht-zugewiesenen) Pointer auf ein Zeichen zu übergeben. Das kann zwar gutgehen, wie man bei dir gesehen hat, dies ist aber eher eine Ausnahme bzw. Zufall. Auf alle Fälle ist es Mist! Zitat:
![]() Zitat:
Ganz schön spät für eine(n) 5jährige(n) ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz