Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#20

Re: Problem mit Programminternem Chat

  Alt 8. Dez 2008, 16:00
in der DATA.pas
Delphi-Quellcode:
procedure TDataModule3.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
Den Socket den du da bekommst, den übergib mit an das Form2 (ja, da musst du eine entsprechende Variable anlegen, damit das darin gespeichert werden kann), sagen wir mal MySock : TCustomWinSock;
In der Form2 kannst du dann mit MySock.SendText() die Nachricht schicken!

Der Code in der DATA.pas sieht grauenvoll aus.

Du erzeugst eine TForm2 (Zeile 43) und dann erzeugst du wieder eine TForm2 (Zeile 56) und die übergibst du dann???
Die erste Form wird angezeigt (Zeile 59) die zweite Form bleibt im Nirwana.

Form1.Counter wird gesetzt (Zeile 56) und dann nochmal einen hochgezählt (Zeile 61) ist aber für nix gut!

Über das Form1.StringGrid1 holst du dir die Anzahl und hoffst, dass das auch mit FormList passt ( Zeile 65-68 )!

Es ist alles sehr konfus ...

Also mach TForm2 als Klasse mit einem Memo1 und einem MySocket : TCustomWinSocket.
Das Form1.StringGrid1 kannst du eigentlich vergessen (oder wenn du magst als Anzeige für den Inhalt vom FormList nehmen).

Die Überprüfung kannst du dann wie folgt machen (FormList gehört in DATA.pas und nicht nach Form1)
Delphi-Quellcode:
for
  i := 0 to
  FormList.Count - 1
do
  if
    Socket.RemoteAddress = TForm2( FormList[ i ] ).MySocket.RemoteAddress
  then
    TForm2( FormList[ i ] ).Memo1.Lines.Add( Socket.ReceiveText );
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat