AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

WM_COPYDATA mit Records und Arrays

Ein Thema von Tyrael Y. · begonnen am 16. Okt 2007 · letzter Beitrag vom 2. Nov 2007
Antwort Antwort
Seite 2 von 2     12   
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#11

Re: WM_COPYDATA mit Records und Arrays

  Alt 16. Okt 2007, 13:45
Nanu? Ging das nicht mal?
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
Tyrael Y.

Registriert seit: 28. Jul 2003
Ort: Stuttgart
1.093 Beiträge
 
Delphi 2007 Professional
 
#12

Re: WM_COPYDATA mit Records und Arrays

  Alt 16. Okt 2007, 15:50
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?
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#13

Re: WM_COPYDATA mit Records und Arrays

  Alt 16. Okt 2007, 16:05
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.
  Mit Zitat antworten Zitat
Benutzerbild von hitzi
hitzi

Registriert seit: 2. Jan 2003
Ort: Eibau
768 Beiträge
 
Delphi 2010 Professional
 
#14

Re: WM_COPYDATA mit Records und Arrays

  Alt 2. Nov 2007, 08:17
Mit den hier angesprochenen Lösungen hat es bei mir geklappt: http://delphi.about.com/od/windowssh...m_copydata.htm
Thomas
Besucht doch mal http://www.hitziger.net
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz