Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Memo wird in Procedure nicht erkannt


aequitas - So 05.12.10 17:28
Titel: Memo wird in Procedure nicht erkannt
Hallo,

ich habe ein Problem bei einem kleinen Chat, den ich gerade zur Übung bastele.
Ich möchte den Text, den ein Client empfangen hat, in einem Memo-Feld anzeigen.
Allerdings wird mein "MemoClient.Lines.Add" (MemoClient ist der Name des Memos) rot unterstrichen und es kommt der Fehler:

[Pascal Fehler] Unit1.pas(107): E2003 Undefinierter Bezeichner: 'MemoClient'

Hier mal die Procedure:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure ServerSocketClientRead (Sender: TObject; Socket: TCustomWinSocket);
var
  Nachricht: string;
begin
  Nachricht := Socket.ReceiveText;
  MemoClient.Lines.Add := (Nachricht);
end;


Hoffe mir kann jemand erklären, wieso das Memo-Feld nicht erkannt wird.
Danke und Grüße


Moderiert von user profile iconMartok: Topic aus Sonstiges (Delphi) verschoben am So 05.12.2010 um 19:11


platzwart - So 05.12.10 17:45

Kein Wunder! Die Prozedur "ServerSocketClientRead" gehört nicht zur Form. Daher werden alle Komponenten bzw. Funktionen, die zur Form gehören, nicht erkannt, wenn du die Form nicht explizit angibst. Korrekt wäre es also so:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure ServerSocketClientRead (Sender: TObject; Socket: TCustomWinSocket);
var
  Nachricht: string;
begin
  Nachricht := Socket.ReceiveText;
  Form1.MemoClient.Lines.Add := (Nachricht);
end;


Anders wäre es, wenn du die Prozedur als Member der Form anlegst. Dann schaut das ganze so aus:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure Form1.ServerSocketClientRead (Sender: TObject; Socket: TCustomWinSocket);
var
  Nachricht: string;
begin
  Nachricht := Socket.ReceiveText;
  MemoClient.Lines.Add := (Nachricht);
end;


jaenicke - So 05.12.10 18:13

Und was die Begrifflichkeiten angeht:
Der Titel sagt es schon: Du hast eine Prozedur, brauchst aber eine Methode des Formulars.


aequitas - So 05.12.10 18:17

War wohl ein ganz doofer Fehler :-(. Aber wieder mal was gelernt.
Dann mal vielen Dank...