![]() |
Re: in der Laufzeit erstellte Komponenten und ihre Funktione
:oops: Hab Erbarmen, ich bin Brillenträger :mrgreen:
|
Re: in der Laufzeit erstellte Komponenten und ihre Funktione
So hab das Clientprogramm geschrieben und auch schon einige eurer Anmerkungen umgesetzt. Das Programm startet auch ohne Probleme, bis ich auf "Senden" drücke. Dann erhalte ich die Fehlermeldung: "Exeption der Klasse ESocketError mit der Meldung 'Asyncroner Socket-Fehler 10061 aufgetreten'. Da ich aber durch "localhost" eigentlich an den Client die Nachricht selbst schicke sollte das meiner Meinung nach nicht auftreten.
Delphi-Quellcode:
Hoffe ihr könnt mir nochmal helfen.
unit Grundclient;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ScktComp, StdCtrls; type TForm1 = class(TForm) Bt_Senden: TButton; Edit1: TEdit; Edit2: TEdit; Memo1: TMemo; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure OnRead(Sender: TObject; Socket: TCustomWinSocket); procedure Bt_SendenClick(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; myClient : TClientSocket; implementation {$R *.dfm} procedure TForm1.OnRead(Sender: TObject; Socket: TCustomWinSocket); begin Memo1.Lines.Add('Daten vom Server'); Memo1.Lines.Add(Socket.ReceiveText); end; procedure TForm1.Bt_SendenClick(Sender: TObject); begin myClient.Host := 'localhost'; myClient.Active := True; if myClient.active=true then begin myClient.Socket.SendText(edit2.text); Memo1.Lines.Add('Nachricht gesendet'); Memo1.Lines.Add(edit2.text); end; edit2.text:='' end; procedure TForm1.FormCreate(Sender: TObject); begin Memo1.Text := 'Client getrennt'; myClient := TClientSocket.Create(self); myClient.Port := 6712; myClient.OnRead := self.OnRead; end; procedure TForm1.FormDestroy(Sender: TObject); begin myClient.Free; end; end. Danke |
Re: in der Laufzeit erstellte Komponenten und ihre Funktione
Hast Du denn auch einen Server?
|
Re: in der Laufzeit erstellte Komponenten und ihre Funktione
muss ich den trotzdem laufen lassen? das Serverprogramm war ja das Programm von vorhin.
|
Re: in der Laufzeit erstellte Komponenten und ihre Funktione
Der Client verbindet sich mit einem Server. Dieser muss den Verbindungsversuch aber auch akzeptieren. Du kannst Dir aber auch einmal
![]() |
Re: in der Laufzeit erstellte Komponenten und ihre Funktione
Leider konnte mir die Seite nicht wirklich weiterhelfen, weil dort eine TTCPServer und TTCPClient benutzen und ganz andere Methoden haben. Hab es jetzt eine Weile versucht und verstanden, dass ich meinen Server mit dem Port und der lokalen Adresse anscheinend verbinden muss, damit er Anfragen abhören kann, aber noch keine Möglichkeit gefunden dies mit TServerSocket zu verbinden.
Vieleicht habt ihr noch ein paar Ideen. |
Re: in der Laufzeit erstellte Komponenten und ihre Funktione
Erstmal recht herzlichen Danke an alle die mir geholfen haben.
Hab aber noch eine weitere Frage. Ich habe die Timer-Funktion an eine Funktion der TForm angebunden, möchte dieser aber weitere Variablen übergeben. Mein Problem ist eigentlich die Angabe des richtigen Sender (TObject) dieser Funktion. Hier meine derzeitigen Versuche:
Delphi-Quellcode:
Wie man sieht, soll die Taste zusätzlich mitgegeben werden. Für Sender in der Funktionszuweisung Controll.OnTimer := self.Kontrolle(Sender,Key); hab ich ich schon Nil und '' angegeben aber bekomme dann immer Fehlermeldungen. Welche Angabe kann ich dort machen, damit dies nicht mehr geschieht.
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin Controll := TTimer.Create(self); Controll.Interval := 25; Controll.OnTimer := self.Kontrolle(Sender,Key); if key in [#48..#57,#44] then begin sBuffer := sBuffer + key; end; end; |
Re: in der Laufzeit erstellte Komponenten und ihre Funktione
Die Signaturen müssen exakt übereinstimmen, Du kannst die Parameterliste nicht ändern. Also bliebe Dir die Möglichkeit, eine globale Variable (lieber nicht) oder eine Property (besser) zu definieren, auf die Du im Timer-Event zugreifen kannst.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz