da ja lnetvisual auf dem mac nicht funktioniert, wollte ich das Konsolen Beispiel entsprechend umschreiben, dass es in ner Form verwendet werden kann, allerdings funktioniert das vorne und hinten nicht. Kann sich das mal einer anschaun, was da schief läuft?
Soll ein kleines Chat programm werden, nix spektakuläres.
Code: Alles auswählen
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
ExtCtrls, ComCtrls, lNet;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
Image1: TImage;
Label1: TLabel;
Label2: TLabel;
StatusBar1: TStatusBar;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
{ TClient }
TClient = class
private
CQuit: boolean;
CCon: TLTcp; // connection itself
procedure OnDs(aSocket: TLSocket);
procedure OnRe(aSocket: TLSocket);
procedure OnEr(const msg: String; aSocket: TLSocket);
public
constructor Create;
destructor Destroy; override;
//procedure Run;
end;
//implementation
var
Form1: TForm1;
cs:TClient;
implementation
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
begin
if Button1.Caption = 'Connect' then
begin
if cs.CCon.Connect(Edit1.Text,Word(StrToInt(Edit2.Text))) then
begin
cs.CCon.CallAction;
Button1.Caption := 'Disconnect';
StatusBar1.Caption := 'connected';
end;
end
else
if Button1.Caption = 'Disconnect' then
begin
cs.CCon.Disconnect(true);
Button1.Caption := 'Connect';
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
cs:=TClient.Create;
end;
{$R *.lfm}
procedure TClient.OnDs(aSocket: TLSocket);
begin
// disconnected
end;
procedure TClient.OnRe(aSocket: TLSocket);
var s:String;
begin
if aSocket.GetMessage(s) > 0 then
begin
// processing messages
end;
end;
procedure TClient.OnEr(const msg: String; aSocket: TLSocket);
begin
CQuit := true;
end;
constructor TClient.Create;
begin
CCon := TLTCP.Create(nil);
CCon.OnError := @OnEr;
CCon.OnReceive := @OnRe;
CCon.OnDisconnect := @OnDs;
CCon.Timeout := 100;
end;
destructor TClient.Destroy;
begin
CCon.Free;
inherited Destroy;
end;
end.