Forum - Delphi
- Delphi XE Problema da Delphi 7
MrCamarium (Member )
Newbie
Messaggi: 6
Iscritto: 28/05/2013
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'
Codice sorgente - presumibilmente Delphi
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 .
MrCamarium (Member )
Newbie
Messaggi: 6
Iscritto: 28/05/2013
Ho risolto con il cliente:
Codice sorgente - presumibilmente Delphi
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:
Codice sorgente - presumibilmente Delphi
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'
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
È 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à.
MrCamarium (Member )
Newbie
Messaggi: 6
Iscritto: 28/05/2013
Ti ringrazio ho risolto, Ho convertito i sorgenti alla versione Delphi XE. Sto postando tutto sul mio sito.
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
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à.
MrCamarium (Member )
Newbie
Messaggi: 6
Iscritto: 28/05/2013
Si per un problema con una icona, alla fine il problema era Windows che non aggiornava il file.