Achso - wäre einfacher, wenn Du auch schreiben würdest was Du genau haben möchtest. Wenn ich Dich also richtig verstehe brauchst Du also die Speicheradresse, an dem der String beginnt, damit Du diese dann als Zeiger übergeben kannst.
In Delphi kannst Du dazu ebenfalls den @-Operator verwenden.
Hier eine kurze Beispielprozedur:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| procedure Test; var p:Integer; s:string; begin s:='TEST'; p:=Integer(s); caption:=String(p); end; |
Es hängt natürlich davon ab wie Du Deine Routine genau implementierst. Im oben genannten Beispiel wird der String s am Ende der Prozedur Test wieder freigegeben. Hast Du nun den Zeiger der Speicheradresse zu s an ein anderes Programm weitergeleitet, so zeigt dieser an die ehemalige Speicheradresse, die aber nicht mehr gültig ist.
In diesem Fall dürfte das angesprochene PostMessage allerdings nicht funktionieren, da Postmessage die Nachricht an die Messagequeue sendet und ohne auf Antwort die Bearbeitung der aktuellen Routine fortsetzt.
Du mußt also SendMessage benutzen. Hier wartet Windows bis ein Programm entsprechend der Implementierung die Bearbeitung der Nachricht quittiert hat.
"Wenn Debugging ein Vorgang ist, Fehler aus einem Programm auszubauen, dann ist Programmieren der Vorgang, Fehler einzubauen."