Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Окно


Страницы:   1 2

Bast ©   (2007-08-20 14:13:00) 

Здравствуйте! Когда начинается Цикл то окно программы подвисает как можно этого избежать?
Пример:
procedure TForm1.Button1Click(Sender: TObject);
var
i:Integer;
begin
form1.TcpClient1.RemoteHost:=Edit1.Text;
for i:=StrToInt(Edit2.Text) to StrToInt(Edit3.Text) do
begin
TcpClient1.RemotePort:=IntToStr(i);
TcpClient1.Open;
form1.Label6.Caption:=Inttostr(i);
if TcpClient1.Connected then
Memo1.Lines.Add(IntToStr(i)+' Открыт');
TcpClient1.Close;
end;
end;

end.


Bast   (2007-08-21 11:26:00) [1]

Почитал, жаль там нет исходников (


Bast   (2007-08-21 11:04:00) [2]

Спасибо за ссылку, сейчас почитаю


DVM   (2007-08-21 10:47:00) [3]


> DevilDevil ©

Фленов рулит


DevilDevil   (2007-08-21 10:40:00) [4]

так попроще должон быть:
http://maxim.int.ru/stuff/xaxaxakep/%e5%a0042/058/1.html


DVM   (2007-08-21 10:29:00) [5]


> Bast   (20.08.07 17:34) [24]

Вау!!! Может для начала прочитать книжку?


> Можно поподробнее?

Куда уж подробнее? Код за тебя написать?


Bast   (2007-08-20 21:29:00) [6]


> ну и в чем проблема - создавай N потоков, в каждом из них
> (в теле метода Execute, если используется класс TThread)
> создавай динамически свой экземпляр клиентского сокета и
> пусть он коннектится к своему порту. Номер порта можно передать
> в поток при его создании в конструктор. При успешном коннекте
> поток должен как-то переадать в основной поток информацию
> об успехе (с пом сообщения или через Synchronize).  После
> завершения поток путь самоликвидируется (FreeOnTerminate
> := true).

Можно поподробнее?


Bast   (2007-08-20 17:34:00) [7]

unit Unit2;

interface

uses
 Classes;

type
 Potok = class(TThread)
 private
 i: integer;
   { Private declarations }
 protected
   procedure Execute; override;
 end;

implementation

{ Important: Methods and properties of objects in visual components can only be
 used in a method called using Synchronize, for example,

     Synchronize(UpdateCaption);

 and UpdateCaption could look like,

   procedure Potok.UpdateCaption;
   begin
     Form1.Caption := 'Updated in a thread';
   end; }

{ Potok }

procedure Potok.Execute;
begin
begin
form1.Button2.Cancel:=False;
form1.memo1.Clear;
form1.Memo2.Clear;
form1.TcpClient1.RemoteHost:=Edit1.Text;
form1.Label4.Visible:=True;
form1.Label5.Visible:=True;
form1.Label6.Visible:=True;
form1.Label7.Visible:=True;
for i:=StrToInt(Edit2.Text) to StrToInt(Edit3.Text) do
begin
If form1.Button2.Cancel then break;
Application.ProcessMessages();
TcpClient1.RemotePort:=IntToStr(i);
TcpClient1.Open;
form1.Label6.Caption:=Inttostr(i);
if TcpClient1.Connected then
begin
Application.ProcessMessages();
Memo1.Lines.Add(IntToStr(i)+' îòêðûò');
TcpClient1.Close;
end
else
begin
Application.ProcessMessages();
memo2.Visible:=True;
Memo2.Lines.Add(IntToStr(i)+' çàêðûò');
end;
end;
end;
end;

end.


Ошибки:
Build
 [Error] Unit2.pas(36): Undeclared identifier: 'form1'
 [Error] Unit2.pas(36): Missing operator or semicolon
 [Error] Unit2.pas(37): Missing operator or semicolon
 [Error] Unit2.pas(38): Missing operator or semicolon
 [Error] Unit2.pas(39): Missing operator or semicolon
 [Error] Unit2.pas(39): Missing operator or semicolon
 [Error] Unit2.pas(39): Undeclared identifier: 'Edit1'
 [Error] Unit2.pas(40): Missing operator or semicolon
 [Error] Unit2.pas(40): Missing operator or semicolon
 [Error] Unit2.pas(41): Missing operator or semicolon
 [Error] Unit2.pas(42): Missing operator or semicolon
 [Error] Unit2.pas(43): Missing operator or semicolon
 [Error] Unit2.pas(44): For loop control variable must be simple local variable
 [Error] Unit2.pas(44): Undeclared identifier: 'Edit2'
 [Error] Unit2.pas(44): Undeclared identifier: 'Edit3'
 [Error] Unit2.pas(46): 'THEN' expected but identifier 'Button2' found
 [Error] Unit2.pas(51): 'THEN' expected but identifier 'Connected' found
 [Error] Unit2.pas(53): Undeclared identifier: 'Application'
 [Error] Unit2.pas(53): Missing operator or semicolon
 [Error] Unit2.pas(54): Missing operator or semicolon
 [Error] Unit2.pas(55): Missing operator or semicolon
 [Error] Unit2.pas(59): Missing operator or semicolon
 [Error] Unit2.pas(60): Missing operator or semicolon
 [Error] Unit2.pas(61): Missing operator or semicolon
 [Fatal Error] Project1.dpr(6): Could not compile used unit 'C:\Program Files\Borland\Delphi7\Projects\Unit2.pas'


Bast   (2007-08-20 17:30:00) [8]

Проблема в том что я питаюсь использовать потоки но нихрена не получается, щас еще раз попробую и покажу что я делаю


DVM   (2007-08-20 17:26:00) [9]

Если же ты используешь асинхронные сокеты на сообщениях, то тебе не нужны потоки, наоборот - они вредны. В этом случе просто создавай динамически N экземпляров клиентского сокета на разных портах и жди соединения.


DVM   (2007-08-20 17:14:00) [10]


> Bast   (20.08.07 17:07) [20]

ну и в чем проблема - создавай N потоков, в каждом из них (в теле метода Execute, если используется класс TThread) создавай динамически свой экземпляр клиентского сокета и пусть он коннектится к своему порту. Номер порта можно передать в поток при его создании в конструктор. При успешном коннекте поток должен как-то переадать в основной поток информацию об успехе (с пом сообщения или через Synchronize).  После завершения поток путь самоликвидируется (FreeOnTerminate := true).


Bast   (2007-08-20 17:07:00) [11]

Во многих япрогах я видел работать в n потоков, как мне сделать такую хрень, ведь мой сканер потртов работает ооочень медленно 1 порт в 1 сек (


Anatoly Podgoretsky   (2007-08-20 16:36:00) [12]

> DVM  (20.08.2007 15:26:17)  [17]

Я бы сказал кто, но и сам не знаю.
Конечно если ты про адрес сервера, на котором хостится delphimaster.ru
Это очень охраняемая тайна хостеров.


Bast   (2007-08-20 15:28:00) [13]

Подскажите как использовать потоки, а то я почитал http://www.megalib.com/books/26/gl03/index.htm#anc1
понял кое что, но не понял как их использовать


DVM   (2007-08-20 15:26:00) [14]


> Врешь, я постоянно сканирую, то что мне нужно.

а я то думаю, кто постоянно сканирует


Anatoly Podgoretsky   (2007-08-20 15:23:00) [15]

> DVM  (20.08.2007 15:23:15)  [15]

Врешь, я постоянно сканирую, то что мне нужно.


DVM   (2007-08-20 15:23:00) [16]


> И тебя кто то послушал?

да


Anatoly Podgoretsky   (2007-08-20 15:21:00) [17]

И тебя кто то послушал?


DVM   (2007-08-20 15:20:00) [18]


> Кто сказал?

я


Anatoly Podgoretsky   (2007-08-20 15:16:00) [19]


> нехорошо порты сканировать

Кто сказал?


DVM   (2007-08-20 15:04:00) [20]


> а если допустим ya.ru то зависает

нехорошо порты сканировать


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо