Autor Beitrag
Hansi@OMG
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 304

Vista
Delphi 2006 Prof., Lazarus
BeitragVerfasst: Di 01.04.03 20:11 
Ich habe ein Client-Server Progi, mit den Indy TCP Komponenten gemacht, wenn das Serverprogi den String Sperren emfängt, soll der Blockinput true gesetzt werden, aus irgendeinem Grund funzt des net, er sendet zwar den String, er kommt an, er wertet ihn aus, aber er sperrt den Blockinput net, schaut mal bitte:

ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
unit Clientcompaq;

interface

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

type
  TForm1 = class(TForm)
    TCPServer: TIdTCPServer;
    Edit1: TEdit;
    Label1: TLabel;
    Button1: TButton;
    Button2: TButton;
    procedure FormCreate(Sender: TObject);
    procedure TCPServerExecute(AThread: TIdPeerThread);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
function BlockInput(fBlock:boolean):boolean; stdcall; external 'user32.dll';

procedure TForm1.FormCreate(Sender: TObject);
begin
TCPserver.active:=true;
end;

procedure TForm1.TCPServerExecute(AThread: TIdPeerThread);
var input,state : string;
begin
  with AThread.Connection do
  begin
    while Connected do begin
    input :=ReadLn;
    edit1.text := input;
    if input = 'Sperren' then begin
      blockinput(true);
      button1.Click;
      athread.Connection.WriteLn('Gesperrt');
      state := 'false';
    end;
 if input = 'Entsperren' then begin
    athread.Connection.WriteLn('Entsperrt');
    blockinput(false);
    button2.Click;
    state := 'true';
    end;
if input = 'Check' then athread.Connection.WriteLn('Bereit');
    Disconnect;
    end;
  end;

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
blockinput(true);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
blockinput(false);
end;

end.



Moderiert von user profile icontommie-lie: Code-Tags hinzugefügt


Zuletzt bearbeitet von Hansi@OMG am Mi 02.04.03 18:38, insgesamt 2-mal bearbeitet
Hansi@OMG Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 304

Vista
Delphi 2006 Prof., Lazarus
BeitragVerfasst: Di 01.04.03 20:14 
Titel: Das passende Clientprogi
ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
unit server;

interface

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

type
  TForm1 = class(TForm)
    IdTCPClient1: TIdTCPClient;
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Shape1: TShape;
    Timer1: TTimer;
    Button2: TButton;
    Button3: TButton;
    Edit3: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
idtcpclient1.Host:=edit2.text;
  with idTCPClient1 do
  begin
    try
    if not Connected then Connect;
    try
      WriteLN(Edit1.Text);
      edit3.Text := Readln;
    finally
       Disconnect;
    end;
    except
    showmessage ('Fehler beim verbinden zu '+ idTCPClient1.Host);
    end;
  end;
end;



procedure TForm1.Button2Click(Sender: TObject);
var status : string;
begin
idtcpclient1.Host:=edit2.text;
  with idTCPClient1 do
  begin
    try
    if not Connected then Connect;
    try
    WriteLN('Check');
    status:=idtcpclient1.ReadLn;
     if status = 'Gesperrt' then
      begin
       shape1.Brush.Color := cllime ;
       timer1.Enabled:=true;
      end;
     if status = 'Entsperrt' then
      begin
       shape1.Brush.Color := clred;
       timer1.Enabled:=true;
       end;
    finally
       Disconnect;
    end;
    except
    shape1.Brush.Color:=clred;
    timer1.Enabled:=false;
    showmessage ('Fehler beim verbinden zu '+ idTCPClient1.Host);
    end;
  end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var status : string;
begin
  with idTCPClient1 do
  begin
    try
    if not Connected then Connect;
    try
      WriteLN('Check');
    status:=idtcpclient1.ReadLn;
    if status = 'Gesperrt' then shape1.Brush.Color := cllime;
    if status = 'Entsperrt' then shape1.Brush.Color := clred;
    finally
       Disconnect;
    end;
    except
    timer1.Enabled:=false;
    shape1.Brush.Color:=clred;
    end;
  end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
close;
end;

end.


Moderiert von user profile icontommie-lie: Code-Tags hinzugefügt
tommie-lie
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: Di 01.04.03 20:38 
Hallo,

Bitte ändere den Namen des Topics in einen aussagekräftigeren. Klicke dazu bei deinem ersten Post auf "Edit".
Delphi-Forum Richtlinien hat folgendes geschrieben:
1.1 Beiträge

Bitte formuliere den Betreff Deiner Beiträge so, dass andere Mitglieder anhand dieser bereits das eigentliche Thema festmachen können. Beiträge wie etwa "Eine Anfängerfrage" oder "Weiß jemand, wie das geht?" lassen den Leser im Unklaren darüber, was das Thema der Diskussion ist. Eine Pseudocodezeile oder die Nennung des Objektes, um welches es sich in dem Beitrag handelt, helfen da schon mehr weiter. Wenn Du beispielsweise wissen möchtest, wie es möglich ist, eine Integer-Variable in das String-Format zu konvertieren, würde ein Beitrag wie etwa "Integer zu String" oder "Integerkonvertierung" anderen Forenmitgliedern einen kurzen Überblick über die eigentliche Fragestellung verschaffen. So ist es möglich gezielter Lösungen für Probleme zu finden. Zudem solltest du immer daran denken: Der Fragesteller möchte etwas von den anderen Usern - nicht umgekehrt.


Danke.

_________________
Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert