![]() |
Re: WM_COPYDATA mit Records und Arrays
Nanu? Ging das nicht mal? :)
|
Re: WM_COPYDATA mit Records und Arrays
Also meine Vermutung ist jetzt, daß es mit dynamischen Arrays nicht möglich ist.
Wie komme ich darauf? Ich hab mir den Record zur Laufzeit angeschaut. zB.:
Delphi-Quellcode:
type
TBytes = array of Byte; TMyData = packed record Data1 : DWord; Data2 : Word; ArrayData : TBytes; end; Record.Data1 Adresse $983FB4 Record.Data2 Adresse $983FB8 - Abstand wie in Definition 4 Bytes Record.Array Adresse $983FBA - Abstand wie in Definition 2 Bytes Record.Array[0] liegt dagegen ganz wo anders zB. auf $982070, also viel weiter unten im Adressbereich Record.Array[1]-[n] sind die Folgeadressen von $982070. Wenn man jetzt die Daten über WM_COPYDATA versendet, geht wogl der Bezug von Record.Array zu Record.Array[0] verloren. Das Array "weiss" nicht mehr wo das erste Element liegt. Kann mir das ein Wissender bestätigen? |
Re: WM_COPYDATA mit Records und Arrays
Kann ich bestätigen. Daher kann man ja auch keine Strings schicken. Wenn muss man sie als ShortString oder String[255] deklarieren.
Evtl geht es aber, dass du nur die Adresse des ersten Elements, die Länge des Arrays und die eigene ProcessID sendest. Der Empfänger kann dann mittels OpenProcess, ReadProcessMemory direkt auf das Array in deinem Sender Prozess zugreifen. |
Re: WM_COPYDATA mit Records und Arrays
Mit den hier angesprochenen Lösungen hat es bei mir geklappt:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:47 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