Einzelnen Beitrag anzeigen

erik-17

Registriert seit: 8. Apr 2010
51 Beiträge
 
Delphi 3 Professional
 
#1

Pointer aus SendMessage nicht dereferenzierbar?

  Alt 30. Aug 2011, 20:03
Delphi-Version: 5
Guten Abend

Ich versuche momentan einen Pointer, der auf einen Record zeigt, mithilfe von SendMessage/PostMessagen von einem Thread an die Main-Unit zu senden. Getestet ist es noch nicht, weil der Thread noch nicht vernünftig mit der Main-Unit läuft (bin da noch am programmieren). Wenn ich jetzt die Ereignisbearbeitungs-Methode (für die Message) schreiben will, dann möchte ich den Pointer ja dereferenzieren, damit ich an die Werte des Records rankomme.
Der Compiler spuckt mir immer Fehler aus...:

Delphi-Quellcode:
//Mein Record: (Sowohl im Thread als auch im Main bekannt)
TimeBinar = record
         Stunden : array[1..5] of boolean;
         Minuten : array[1..6] of boolean;
         Sekunden : array[1..6] of boolean;
end;

//Das Senden...
PostMessage(Form1.Handle,WM_TIME_ANNOUNCING,1,Integer(@PTimeBinar));
PostMessage(Form1.Handle,WM_TIME_ANNOUNCING,1,Integer(PTimeBinar)); //ohne "@" -> "Ungültige Typumwandlung"

//... und das Empfangen:
procedure TForm1.OnTimeAnnounce(var Msg: TMessage);
var p : TimeBinar;
begin
case Msg.WParam of
1 : begin
         p := TimeBinar(Msg.LParam^); //Zeigertyp erwartet
         p := TimeBinar(Msg.LParam); //Ungültige Typumwandlung
         p := Msg.LParam^; //Zeigertyp erwartet
         p := Msg.LParam; //Inkompatible Typen "TimeBinar" und "Integer"
...
Mach ich das soweit erstmal richtig (bin auf dem Gebiet noch Anfänger) oder muss man das ganz anders machen? Und wie komm ich schlussendlich an das Record ran?

Danke im voraus und guten Abend noch
  Mit Zitat antworten Zitat