![]() |
maximale Länge von Zeichenkette bei WM_COPYDATA??
Hallo zusammen,
ich habe mich an WM_COPYDATA, wie in der ![]() schon mal besten Dank für eure Hilfe PS: Ich hoffe ich bin an der richtigen Stelle für meine Frage gelandet... |
Re: maximale Länge von Zeichenkette bei WM_COPYDATA??
So weit ich weiß gibt es bei wm_copydata keine Größenbeschränkung (zumindest nicht so eine geringe). Kannst du mal den Source posten wie du die Daten überträgst? Hast du eventuell eine falsche Größe für deine Daten angegeben?
|
Re: maximale Länge von Zeichenkette bei WM_COPYDATA??
versteh ich nicht :gruebel: also, hier mein source:
Delphi-Quellcode:
macht natürlich keinen sinn so, aber ich habs mal ein wenig gekürzt. normalerweise will ich reagieren, wenn ich mein programm mit /s:handle aufgerufen wurde und an den angegebenen handle was senden, aber wie gesagt, die prüfungen hab ich rausgeschmissen
procedure TCopyDataForm.FormCreate(Sender: TObject);
var aCopyData: TCopyDataStruct; p: PChar; begin p := 'ganz'#13#10'langer string'; with aCopyData do begin dwData := 0; cbData := StrLen(p) + 1; lpData := p; end; SendMessage(StrToInt(Copy(ParamStr(1), 4, Length(ParamStr(1)) - 3)), WM_COPYDATA, LongInt(Handle), LongInt(@aCopyData)); end; |
Re: maximale Länge von Zeichenkette bei WM_COPYDATA??
arbeitest du in deinem richtigen Programm auch mit "pchar" und weißt dem einen staatichen String zu?
Ich weiß nicht woran es liegt, aber ich hatte bei einer ApiFunktion damit auch schon Probleme wenn ich einen staatichen PChar übergeben hab. Wenn ich den Text dynamich übergeben hab (anhand der Eingabe eines Edits etc.) hat es geklappt. Wie sieht der Source auf der Gegenseite aus? (soweit stimmt beim dem Source eigentlich alles) |
Re: maximale Länge von Zeichenkette bei WM_COPYDATA??
Meine Gegenseite (genau genommen nur eine andere Instanz des gleichen Programms):
Delphi-Quellcode:
und die Wahrheit über das Senden:
procedure TCopyDataForm.WMCopyData(var Msg: TWMCopyData);
begin Memo1.Lines.Add('nachricht von ' + IntToStr(Msg.From)); Memo1.Lines.Add(String(Msg.CopyDataStruct.lpData)); end;
Delphi-Quellcode:
wobei ich SearchInstructions vorher aus statischen Strings und einer StringGrid-Zelle zusammensetze
p := PChar('SearchInstructions:'#13#10 + SearchInstructions);
(damit gehts genauso wenig :cry: ) |
Re: maximale Länge von Zeichenkette bei WM_COPYDATA??
Moin stz,
wenn Du am Ziel auch String(....) stehen hast, mache daraus mal PChar(...) Dann funktioniert es. |
Re: maximale Länge von Zeichenkette bei WM_COPYDATA??
jaaaa :-D das wars
super! und wieder habt Ihr einen armen kleinen Coder glücklich gemacht. PS: Könnt Ihr diesen segensreichen Hinweis vielleicht auch hier ergänzen? ![]() |
Re: maximale Länge von Zeichenkette bei WM_COPYDATA??
Noch eine Anmerkung:
Beachtet wenn ihr Daten über Strings (pchars) versendet/tunnelt: Für char-strings bedeutet das #0 Zeichen das Ende der Zeichenkette. In diesem Falle müßt ihr die Länge der Daten unbedingt mit übergeben - wie es Delphi-Strings tun. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:18 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 by Thomas Breitkreuz