![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как правильно задействовать в нити класс 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 для этого самое паршивое место :/) ?