Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - eine zweite Variable einlesen ReadStr


D. Annies - Fr 03.12.10 08:15
Titel: eine zweite Variable einlesen ReadStr
Hi, Delpher,

mit dem folgenden Code übergebe ich an ein zweites Delphi-Programm eine String-Variable:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
procedure TBuchMain.ReadStrVariable(Var msg: TMessage);
var H : THandle;
   cds: TCopyDataStruct;
begin
  cds.dwData := 0;
  cds.cbData := StrLen(PChar(SsTname)) + 1;;
  cds.lpData := PChar(SsTname);  // <= Label30 + TbSchueler.tablename
  H := FindWindow('TPatMatForm'NIL);
  SendMessage(H, WM_COPYDATA, Longint(Application.Handle), Integer(@cds));
end;

// Der korrespondierende Code aus dem zweiten Programm ist:

procedure TPatMatForm.ReadStrVariable;
var H: THandle;
begin
  H := FindWindow('TBuchMain'NIL);
  PostMessage(H, WM_READSTR, 00);
end;

procedure TPatMatForm.ReceiveStrVariable(var msg: TWMCopyData );
var sText  : array[0..256of Char;
begin
  StrLCopy(sText, Msg.CopyDataStruct.lpData, Msg.CopyDataStruct.cbData);
  qFname := sText;
  Label11.Caption := qFname;                           {uses FileCtrl/SysUtils}
  Label11.Caption := MinimizeName(qFname,        //Der abzukürzende Pfadname
                                  Label11.Canvas, //Die Referenz-Zeichenfläche
                                  Label11.Width); //Die maximale Ausgabe-Breite
  Label11.Hint := qFname;
end;


Nun möchte ich noch eine zweite Variable "gleichzeitig" mit übergeben können.
Wie gelingt das?
Vielen Dank für Hilfe,
Detlef


BenBE - Fr 03.12.10 08:23

Schreib Dir einen Datenpuffer mit beiden Variablen und übergebe diesen statt der einzelnen Variablen beim Senden der Daten.

Auf der Gegenstelle einfach den Puffer auslesen und die beiden Variablen-Werte auseinanderfrickeln.


D. Annies - Fr 03.12.10 10:52

Hi, Benny,
danke für deine Idee, hat geklappt!
>Gruß aus Lübeck,
Detlef