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

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

как правильно задействовать в нити класс TClientSocket [D6, WinXP]


LeNa19 ©   (2003-09-07 13:52:00) 

привет всем
наролд подскажите как правильно задействовать
в нити класс TClientSocket
а то у меня во время запуска приложения (нить еще не запущена)
вылетает мессага класс TClientSocket не найден
я делаю ето так а как правильно ?????

unit scan;

interface

uses

ScktComp,
Classes;


type
Tscan = class(TThread)
myclient:TClientSocket;
private
{ Private declarations }
protected
procedure Execute; override;
end;

implementation uses unit1;

{ Tscan }

procedure Tscan.Execute;
begin
{
myclieht:=TClientSocket.
myclient.Port:=139;
myclient.Host:="127.0.0.1";
myclient.Active:=true;
}
end;

end.


LeNa19   (2003-09-09 17:36:00) [1]

огромное спасибо всем
я нашла свою ошибку


FoxBox   (2003-09-09 11:45:00) [2]

Если TClientSocket нужен постоянно и много (обращение к экземпляру идет из нескольких методов одного из объектов), то объявить его как свойство данного объекта и в конструкторе объекта написать, напр

constructor TMyObject.Create;
begin
inherited;
MySocket := TClientSocket.Create;
...
end;

потом в деструкторе убить MySocket

а в методах уже дергаешь MySocket.Port := Хрен_Знает_Что
или там чего тебе надо...


mrcat   (2003-09-09 08:53:00) [3]

LeNa19 (08.09.03 23:57)

Давайте на секунду забудем о нитях, потоках, процессах ...
Как Вы будете реализовывать создание экземпляра TClientSocket run-time ?


Digitman   (2003-09-09 08:16:00) [4]


> а вот компилятор его не видит


приведи код именно в том виде, в котором кто-то кого-то "не видит"


LeNa19   (2003-09-08 23:57:00) [5]

TO mrcat
а что, если в коде нет конструктора сокета , то при запуске приложения должна быть ошибка . Я же не активизирую нить в которой он создается(в основном модуле нет Tscan.create )
ето же равнносильно что объявить переменную и не воспользоватся ей

TO Digitman
а вот компилятор его не видит.


mrcat   (2003-09-08 13:12:00) [6]

Verg © (08.09.03 11:46)
LeNa19 (08.09.03 12:29)

Это и не пример, а указание на отсутствие конструктора в приведённом коде.


Digitman   (2003-09-08 12:37:00) [7]


> LeNa19


))
любопытно, а как метод Create д.б. еще "виден" в этом коде ?
я вот вижу, к примеру)... оч даже хорошо вижу) ... что же тебе не видно там ?


LeNa19   (2003-09-08 12:29:00) [8]

TO Digitmen
чего "не виден" ? кому "не виден" ? где "здесь" ?
в коде приведенном mrcat
в книге он дествительно не виден изза отсутствия таковой


Verg   (2003-09-08 11:55:00) [9]

И вообще. Не надо понимать слова
{ Place thread code here }

Так буквально....


Verg   (2003-09-08 11:46:00) [10]

В том куске кода вообще ничего не происходит


> mrcat © (08.09.03 09:29) [1]


В этом тоже


mrcat   (2003-09-08 11:45:00) [11]

Digitman © (08.09.03 11:43)
чего "не виден" ? кому "не виден" ? где "здесь" ?

в книжке, наверное :)


Digitman   (2003-09-08 11:43:00) [12]


> можно былобы попробовать и в EXECUTE но метод CREATE здесь
> ещо не виден


чего "не виден" ? кому "не виден" ? где "здесь" ?


LeNa19   (2003-09-08 11:25:00) [13]

можно былобы попробовать и в EXECUTE но метод CREATE здесь ещо не виден :-(


mrcat   (2003-09-08 09:29:00) [14]

procedure Tscan.Execute;
begin
{
myclieht:=TClientSocket.Create(что-то_там);
myclient.Port:=139;
myclient.Host:="127.0.0.1";
myclient.Active:=true;
}
end;

Может, для начала, TClientSocket.Create организовать в другом месте, например, при создании нити (как-никак TThread.Execute для этого самое паршивое место :/) ?


Наверх

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