Oppure

Loading
13/01/22 19:16
MrCamarium
Ho scaricato un sorgente da questo sito con qui tramite server e cliente è possibile massaggiare ma nel compilarlo mi da questo errore:
[DCC Error] Unit1.pas(53): E2003 Undeclared identifier: 'WriteLn'

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdTCPServer, IdBaseComponent, IdComponent,
  IdTCPConnection, IdTCPClient, IdAntiFreezeBase, IdAntiFreeze, ExtCtrls;

type
  TForm1 = class(TForm)
    client: TIdTCPClient;
    anticongelo: TIdAntiFreeze;
    logmemo: TMemo;
    Button1: TButton;
    Timer1: TTimer;
    Button2: TButton;
    Button3: TButton;
    Edit1: TEdit;
    Edit3: TEdit;
    Memo1: TMemo;
    Label1: TLabel;
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


procedure TForm1.Button2Click(Sender: TObject);
begin
  Client.Disconnect;
  client.Port:=strtoint(edit1.text);
  client.Host:=edit3.text;
  Client.Connect();
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
 if Client.Connected then
  begin
   Client.WriteLn(memo1.text);
   memo1.clear;
  end
 else
 showmessage('Non sei ancora connesso');

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 client.Disconnect;
 halt;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if client.Connected then
logmemo.Lines.Add(client.ReadLn('',5));
end;

end.
aaa
16/01/22 7:08
MrCamarium
Ho risolto con il cliente:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdTCPServer, IdBaseComponent, IdComponent,
  IdTCPConnection, IdTCPClient, IdAntiFreezeBase, IdAntiFreeze, ExtCtrls;

type
  TForm1 = class(TForm)
    client: TIdTCPClient;
    anticongelo: TIdAntiFreeze;
    logmemo: TMemo;
    Esci: TButton;
    Timer1: TTimer;
    Connetti: TButton;
    Invia: TButton;
    Edit1: TEdit;
    Edit3: TEdit;
    Memo1: TMemo;
    Label1: TLabel;
    procedure ConnettiClick(Sender: TObject);
    procedure InviaClick(Sender: TObject);
    procedure EsciClick(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


procedure TForm1.ConnettiClick(Sender: TObject);
begin
  Client.Disconnect;
  client.Port:=strtoint(edit1.text);
  client.Host:=edit3.text;
  Client.Connect();
end;

procedure TForm1.InviaClick(Sender: TObject);
begin
 if Client.Connected then
  begin
   Client.IOHandler.WriteLn(memo1.text);
   memo1.clear;
  end
 else
 showmessage('Non sei ancora connesso');

end;

procedure TForm1.EsciClick(Sender: TObject);
begin
 client.Disconnect;
 halt;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if client.Connected then
logmemo.Lines.Add(client.IOHandler.ReadLn('',5));
end;

end.

Adesso il problema è con il server:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPServer, IdContext,
  IdCustomTCPServer;

type
  TForm1 = class(TForm)
    server: TIdTCPServer;
    Edit1: TEdit;
    Button1: TButton;
    Memo1: TMemo;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure serverExecute(AThread: TIdContext);
    procedure serverConnect(AThread: TIdContext);
    procedure serverDisconnect(AThread: TIdContext);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
var connessi:integer;
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
server.DefaultPort:=strtoint(edit1.text);
server.Active:=true;;

end;

procedure TForm1.serverExecute(AThread: TIdContext);
var listaclient:tlist; i:integer;
    messaggioprelevato:string;
begin
 messaggioprelevato:=AThread.Connection.IOHandler.ReadLn;
 memo1.lines.add(messaggioprelevato);
 Listaclient := Server.Threads.LockList;
 try
  for i:=0 to connessi-1 do
   try
    TIdContext(Listaclient.Items[i]).Connection.IOHandler.WriteLn(messaggioprelevato);
   except
    TIdContext(Listaclient.Items[i]).Stop;
   end;
 finally
 end;
 Server.Threads.UnlockList;

end;

procedure TForm1.serverConnect(AThread: TIdContext);
begin
 AThread.Connection.IOHandler.WriteLn('Benvenuto tu sei il client numero'+inttostr(connessi));
 connessi:=connessi+1;
 if connessi=1 then
  label1.Caption:='1 connesso'
 else
  if connessi=0 then
   label1.caption:='Nessun connesso al server'
  else
   label1.caption:=inttostr(connessi)+' connessi';
end;

procedure TForm1.serverDisconnect(AThread: TIdContext);
begin
 connessi:=connessi-1;
 if connessi=1 then
 label1.Caption:='1 connesso'
 else
 if connessi=0 then
 label1.caption:='Nessun connesso al server'
 else
 label1.caption:=inttostr(connessi)+' connessi';
end;

end.

Mi da questo errore:
[DCC Error] Unit1.pas(49): E2003 Undeclared identifier: 'Threads'
aaa
16/01/22 17:06
nessuno
È una questione di compatibilità tra la versione che usi e quella per cui è stato scritto il codice
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità;) chiamava il gioco del Lotto Tassa sulla stupidità.
21/01/22 7:58
MrCamarium
Ti ringrazio ho risolto, Ho convertito i sorgenti alla versione Delphi XE. Sto postando tutto sul mio sito.
aaa
21/01/22 18:04
nessuno
Prego... ho visto che ti sei trasferito su

iprogrammatori.it/forum-programmazione/delphi/…
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità;) chiamava il gioco del Lotto Tassa sulla stupidità.
02/02/22 12:29
MrCamarium
Si per un problema con una icona, alla fine il problema era Windows che non aggiornava il file.
aaa