Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi WM_COPYDATA mit Records und Arrays (https://www.delphipraxis.net/101598-wm_copydata-mit-records-und-arrays.html)

OregonGhost 16. Okt 2007 12:45

Re: WM_COPYDATA mit Records und Arrays
 
Nanu? Ging das nicht mal? :)

Tyrael Y. 16. Okt 2007 14:50

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?

Zacherl 16. Okt 2007 15:05

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.

hitzi 2. Nov 2007 07:17

Re: WM_COPYDATA mit Records und Arrays
 
Mit den hier angesprochenen Lösungen hat es bei mir geklappt: http://delphi.about.com/od/windowssh...m_copydata.htm


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:47 Uhr.
Seite 2 von 2     12   

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