Archiv verlassen und diese Seite im Standarddesign anzeigen : Daten empfangen
fabian ackle
25.06.2002, 20:24
Hi
ich baslte momentan gerade ein wenig mit den Delphi-Sockets, aber ich kann einfach keine daten empfangen, hab schon ein wenig gegoogelt und dabei folgendes gefunden: procedure TForm1.csRead(Sender: TObject; Socket: TCustomWinSocket);
var rec:String;
begin
rec:=socket.ReceiveText; // der empfangene Text wird in die Variable 'rec' geschrieben
Memo1.Lines.Add(rec); // Ausgabe der Variable 'rec'
end;
aber beim Compilieren kommen folgende fehler:
[Error] Bot.pas(48): Undeclared identifier: 'csRead'
[Error] Bot.pas(51): Undeclared identifier: 'Socket'
[Error] Bot.pas(52): Record, object or class type required
was stimmt denn da nicht?
thx
fabian
Felix Kaiser
25.06.2002, 20:38
Du hast diese Prozedur nicht in der Objektstruktur von TForm1 deklariert. Die anderen beiden Fehler entstehen durch diesen Fehler.
tja, da hat dein socket wohl nicht den richtigen namen :eek: nimm die socket-komponente auf dem form, und stell die eigenschaft "name" auf "socket".
zum anderen: ist fast genau das selbe. kopier den code einfach z.b. in das "onclick"-ereignis eines buttons. und die variable auch, nicht vergessen ;)
edit: oh, guru war schneller *g*
fabian ackle
25.06.2002, 20:48
@D3DSH33P:
neee, habe die namen schon angepasst ;)
@Felix:
thx, das wars, klappt nun wunderbar :D
greetz
fabian
fabian ackle
25.06.2002, 23:20
hmm... aber ich habe noch eine frage: stimmt diese prozedur überhaupt?
procedure csRead(Sender: TObject; Socket: TCustomWinSocket);
die verbindung besteht, aber ich bekomme einfach keine daten zurück...
greetz
dubious
Felix Kaiser
26.06.2002, 00:26
Du musst die Funktion als Ereignishandler für OnRead des ClientSockets festlegen, entweder im Objektinspektor oder zur Laufzeit:
ClientSocket1.OnRead:= csRead;
fabian ackle
26.06.2002, 19:01
ach... das muss man selber machen?
hehe, bin anscheinend ein bisschen von VB verwöhnt ;)
s funzt, thx
fabian
Felix Kaiser
26.06.2002, 22:14
Das muss man eigentlich immer selber machen, wie das VB macht weiß ich nicht. Aber man kann nicht erwarten, wenn man irgendwas in Quelltext schreibt, dass das automatisch irgendwelchen Komponenten zugeordnet ist. Wie denn auch? ...
fabian ackle
26.06.2002, 22:37
das ist eigentlich klar... in vb wird es einfach direkt in der sub-routine deklariert (zB. Sub Button1_Click()) und ich dachte, dass es bei Delphi ebenfalls so funktioniert... anscheinend nicht :rolleyes:
vielen dank für deine hilfe
greetz
fabian
Felix Kaiser
27.06.2002, 01:16
Dann gewöhn dich mal schnell dran. Das VB prinzip scheint mir uneffizient, denn mit Delphi hast du die Möglichkeit die Namen der Prozeduren für Ereignisse frei zuwählen (kürzer?) und kannst eine definierte Prozedur so oft zuweisen, wie du halt brauchst. Am besten ist, du schaust dir erstmal die genauere Funktionalität im Formulardesigner bzw. im Objektinspektor an und übst damit einwenig, damit du zuweisungsspezifische Fehler in Zukunft meiden kannst, mal so als Tipp am Rande ;)
vBulletin® v3.8.6, Copyright ©2000-2012, Jelsoft Enterprises Ltd.