Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.05.20;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.043 c
2-1178364358
Oleg_teacher
2007-05-05 15:25
2007.05.20
Treeview


2-1177584697
Пока что юзер
2007-04-26 14:51
2007.05.20
Как запаковать файлы в arj c помощью Делфи?


2-1176404888
ancot
2007-04-12 23:08
2007.05.20
запуск bat файла


15-1177295807
Slider007
2007-04-23 06:36
2007.05.20
С днем рождения ! 23 апреля


2-1177569722
UMU
2007-04-26 10:42
2007.05.20
DBEdit