Einzelnen Beitrag anzeigen

silver-moon-2000

Registriert seit: 18. Feb 2007
Ort: Schweinfurt
170 Beiträge
 
Delphi XE Professional
 
#1

array per message in eigener anwendung versenden

  Alt 10. Aug 2010, 11:09
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.
Tobias
Bitte nicht hauen , ich weiß es nicht besser
  Mit Zitat antworten Zitat