| Autor |
Beitrag |
Hansi@OMG
      
Beiträge: 304
Vista
Delphi 2006 Prof., Lazarus
|
Verfasst: 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:
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 tommie-lie: Code-Tags hinzugefügt
Zuletzt bearbeitet von Hansi@OMG am Mi 02.04.03 18:38, insgesamt 2-mal bearbeitet
|
|
Hansi@OMG 
      
Beiträge: 304
Vista
Delphi 2006 Prof., Lazarus
|
Verfasst: Di 01.04.03 20:14
Titel: Das passende Clientprogi
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 tommie-lie: Code-Tags hinzugefügt
|
|
tommie-lie
      
Beiträge: 4373
Ubuntu 7.10 "Gutsy Gibbon"
|
Verfasst: 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
|
|
|