Hallo zusammen,
tut mir (schon fast) leid, Euch wieder mal nerven zu müssen, aber weder Suchfunktion noch Tante Google konnten mir weiterhelfen:
Das folgende Konstrukt wurde mir von meinem Vorgänger (Praktikant, wie ich auch) so überlassen und ich soll es nun wieder aufnehmen (wobei ich auch nicht mehr Ahnung habe
).
Ich soll / muss / darf ein Array von einem Object aus per Message an ein anderes Object "verschicken", jedoch innerhalb meiner eigenen Anweisung.
Delphi-Quellcode:
const wm_my_notify = wm_user + 1;
type RQueueItem = record
Level : Integer;
comm : Boolean;
BP : Boolean;
[...]
end;
type TAQueue = array of RQueueItem;
Delphi-Quellcode:
type TClassOne = class(TObject)
private
FQueue : TAQueue;
procedure CreateQueue;
public
procedure Notify;
end;
procedure TClassOne.CreateQueue;
begin
SetLength(FQueue, 100);
//Befüllen des FQueue;
end;
procedure TClassOne.Notify;
begin
//soll Fqueue per Message versenden
SendMessage(classTwo.handle, wm_my_notify, Cardinal(@FQueue), 0);
end;
Delphi-Quellcode:
type TClassTwo = class(TObject)
private
FHandle : THandle;
FQueue : TAQueue;
procedure WndProc(msg : TMessage);
public
end;
procedure TClassTwo.WndProc(msg : Tmessage);
var test : Integer;
begin
if msg.msg = wm_my_notify then
test := ((msg.wparam)^ as TAQueue)[0].Level; //funktioniert nicht
//??? Zugriff auf Queue-Array
end;
ClassTwo hat per AllocateHwnd ein
Handle erhalten.
ClassOne füllt sein FQueue und soll es dann per Message an ClassTwo übertragen.
Die Message kommt auf prima an, ich kann auch Integers o.Ä. übertragen (z.B.
SendMessage(classTwo.handle, wm_my_notify, High(FQueue), 0);
funktioniert tadellos und ich kann in ClassTwo auswerten mit
test := msg.wparam
Nur habe ich keine Ahnung, wie ich in ClassTwo wieder auf das Array bzw. dessen Struktur zugreifen soll, also konkret, was in TClassTwo.WndProc zu stehen hat, damit ich das Array verarbeiten kann.
Ich hoffe, ich konnte halbwegs verständlich machen, was mein Problem ist. Wäre dankbar, wenn sich jemand meines Problems annehmen könnte.