Форум: "Начинающим";
Текущий архив: 2007.05.20;
Скачать: [xml.tar.bz2];
ВнизIdTCPClient Найти похожие ветки
← →
tigraman (2007-04-24 23:55) [0]Здравствуйте. Такой вопрос: Я передаю данные через IdTCPClient, все нормально если я передаю сроку вида
IdTCPClient.WriteLn("text")
, но если я пытаюсь засунуть туда переменнуюIdTCPClient.WriteLn(Edit1.Text);
при выполнении данного кода все подвисает, подкажите где я не прав.
← →
Сергей М. © (2007-04-25 08:06) [1]GetCurrentThreadId = MainThreadId ?
← →
tigraman (2007-04-25 08:26) [2]А по подробнее можно объяснить что это?
← →
Сергей М. © (2007-04-25 08:35) [3]if GetCurrentThreadId = MainThreadId then
MessageBox(0, "Текущий поток - основной", "", mbOk or mbSetforeground)
else
MessageBox(0, "Текущий поток - дополнительный", "", mbOk or mbSetforeground);
try
IdTCPClient.WriteLn(Edit1.Text);
except
on e:exception do
MessageBox(0, PChar(e.Classname + " " + e.Message), "", mbOk or mbSetforeground);
end;
Какие сообщения видишь при этом ?
← →
tigraman (2007-04-25 21:43) [4]Вижу сообщение Текущий поток - основной. Но непоняное дело, на другом компьютере ничего не меняя вроде все работает нормально, может что-то с сетью, хотя странно как-то.
← →
tigraman (2007-04-25 22:14) [5]А можно еще вопрос? на событие компонетна IDTCPServer я получаю и обрабатываю данные посланные клиентом, только как потом сообщить клиенту о результате обработки данных?
Вот так AThread.Connection.WriteLn("Команда выполнена успешно"); Но на какое событие клиента их обрабатывать? На IdTCPClientConnected? Чего то не выходит, хотя в примере что я видел вроде так было.
← →
Сергей М. © (2007-04-26 09:56) [6]
> Чего то не выходит
А вошло ли это "чего то" вообще ?
Показывай код ..
← →
tigraman (2007-04-26 19:34) [7]Хорошо, вот код:
Отпраляю командуIdTCPClient.Host := frmMain.Edit1.Text;
IdTCPClient.Port := 9542;
IdTCPClient.Connect;
IdTCPClient.WriteLn(NetCombobox.Text+"|"+Edit2.Text);
IdTCPClient.Disconnect;
Обрабатываю командуprocedure TfrmMain.IdTCPServerExecute(AThread: TIdPeerThread);
var
Command,comman2,pass : String;
begin
Command := AThread.Connection.ReadLn;
comman2:=copy(Command,0,pos("|",Command)-1);
pass:=copy(Command,pos("|",Command)+1,1500);
AThread.Connection.WriteLn("Command execute sucsesful");
if (pass= RegReadStr(HKEY_LOCAL_MACHINE,"Software\netshut\s","r"))
and
(form2.SecurityCheckBox1.Checked=true) then begin
AThread.Connection.WriteLn("Action has been execute!");
if comman2=NetCombobox.Items.Strings[0]
then form1.Poweroff1.Click;
if comman2=NetCombobox.Items.Strings[1]
then form1.Reboot1.Click;
if comman2=NetCombobox.Items.Strings[2]
then form1.Logoff1.Click;
if comman2=NetCombobox.Items.Strings[3]
then form1.Hibernate1.Click;
if comman2=NetCombobox.Items.Strings[4]
then form1.Suspend1.Click;
end
else begin
AThread.Connection.WriteLn("Error, password wrong!");
end;
end;
А тут, как я понимаю, должен быть обработан ответ сервераprocedure TfrmMain.IdTCPClientConnected(Sender: TObject);
var
LString : String;
begin
LString := IdTCPClient.ReadLn;
StatusBar.SimpleText:=LString;
end;
С точки зрения мастеров на сколько глупо выглядит код? И как правильно передавать переменные, или и так нормально?
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.05.20;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.04 c