Текущий архив: 2003.09.11;
Скачать: CL | DM;
Вниз
RunTime Найти похожие ветки
← →
Lorry (2003-08-25 20:54) [0]доброго времени суток!
Создаю в консольном приложении в RunTime сокет:
var sc:TServerSocket;
.....
sc:=sc.create(nil);
......
а потом возникает проблема: не знаю как сделать событие
sc.onClientRead
а вот дальше где описывать "реакцию" сокета на подобную наглость?
Заранее спасибо
← →
Романов Р.В. (2003-08-25 21:05) [1]Во первых создаешь неправильно
sc:=TServerSocket.create(nil);
во вторых почитай
http://www.delphikingdom.com/helloworld/runtime_comp.htm
← →
Lorry (2003-08-25 21:34) [2]2 Романов Р.В.
Спасибо! то что надо
← →
Lorry (2003-08-26 13:12) [3]что-то я снова неправильно делаю - создаю сокет, а обработчик
sc.onClientRead:=MyProcedure()
Получаю ошибку Incopatible types "TSocketNotifyEvent" and "procedure, untyped pointer or untyped parameter"
что я неправильно делаю?
← →
Lorry (2003-08-26 13:13) [4]P.S. Заранее спасибо
← →
Skier (2003-08-26 13:15) [5]MyProcedure() должна быть методом класса.
← →
Lorry (2003-08-26 14:36) [6]
> Skier
а свою процедуру никак нельзя подставить?
нужно чтоб по событию OnClientRead сокет получал и обрабатывал информацию
← →
Романов Р.В. (2003-08-26 14:41) [7]подставь метод формы или создай объект(класс) с нужным методом
← →
Skier (2003-08-26 14:44) [8]>Романов Р.В. © (26.08.03 14:41)
У автора консольное приложение, следовательно нет формы, нет объекта Application и по сему с обработкой событий будут проблемы...
← →
Романов Р.В. (2003-08-26 14:51) [9]
> Skier © (26.08.03 14:44) [8]
> >Романов Р.В. © (26.08.03 14:41)
> У автора консольное приложение,
А...
Автор, для начала сделай неконсольное приложение, потом усложняй задачу...
← →
Lorry (2003-08-26 22:10) [10]
> Романов Р.В.
Смысла нет. С неконсольным у меня проблем не возникает! В том-то и загвоздка. что приложение консольное!
Посоветуйте еще что нибудь
← →
Романов Р.В. (2003-08-26 22:18) [11]Мобыть не консольное приложение делать, а приложение без формы. Там сделай цикл обработки сообщений. А насчет метода... можно написать потомок Сокета с нужным методом и назначить его в качестве обработчика.
← →
Lorry (2003-08-27 00:02) [12]
> Романов Р.В.
Приложение без формы, к сожалению, не подходит.
А нельзя никак с обычным сокетом исхитриться?
← →
Юрий Зотов (2003-08-27 01:29) [13]> Lorry
Итак, обработчик должен быть методом класса. У Вас есть единственный класс - TServerSocket. Стало быть, только в нем и может жить обработчик. В нем он и должен жить, и не надо "исхитряться".
type
TMyServerSocket = class(TServerSocket)
private
procedure ClientReadHandler(...);
public
constructor Create(...); override;
end;
constructor TMyServerSocket.Create(...);
begin
inherited;
OnClientRead := ClientReadHandler;
end;
procedure TMyServerSocket.ClientReadHandler(...);
begin
... // Здесь Ваш код
end;
======================
var
Sc: TMyServerSocket;
begin
Sc := TMyServerSocket.Create(nil);
... // И обработчик уже назначен
← →
Digitman (2003-08-27 08:28) [14]
> Lorry
Таки непонятно, чем не устраивает обычное GUI-приложение без видимой формы
← →
Lorry (2003-08-27 20:05) [15]
> Юрий Зотов
Большое спасибо за помощь!! Теперь понял наконец-то!
← →
Lorry (2003-08-28 20:18) [16]> Юрий Зотов
Извините за еще один вопрос
получаю ошибку
Declaration of "Create" differs from previous declaration
что делать?
← →
Skier (2003-08-28 20:22) [17]>Lorry (28.08.03 20:18)
Код-то покажи.
← →
panov (2003-08-28 20:45) [18]Declaration of "Create" differs from previous declaration
Ну так при определении в классе и при реализации процедура и параметры по-разному описаны...
← →
Lorry (2003-08-29 02:37) [19]
> Skier
ВОт
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils,
ScktComp;
type
TMyServerSocket = class(TServerSocket)
private
procedure MyProc();
public
constructor Create(); override;
end;
constructor TMyServerSocket.Create();
begin
inherited;
OnClientRead := MyProc();
end;
procedure TMyServerSocket.MyProc();
begin
//Code
end;
← →
Song (2003-08-29 08:39) [20]:)
я плакаль
он в буквальном смысле скопировал, что написал Юрий :)
← →
Skier (2003-08-29 11:00) [21]constructor Create( AOwner: TComponent); override;
← →
Digitman (2003-08-29 11:16) [22]мда.... а мы тут - о высоких материях, понимаешь ли))
← →
Lorry (2003-08-29 14:38) [23]
> Song
не надо плакать. Гениями не рождаются - я же учусь
← →
Skier (2003-08-29 14:40) [24]>Lorry (29.08.03 14:38)
Не с того конца ты начал учится. Надо бы с книжек...
← →
Lorry (2003-08-29 14:40) [25]
> Digitman
о высоких не надо)
я ж хочу понять как сие работает, понимаете? Разобраться.
Как разберусь и пойму - перестану задавать глупые вопросы))
← →
pasha_golub (2003-08-29 14:54) [26]2Lorry
Да ты не обижайся, просто действительно глупость написал, читай книжки, честно
← →
Digitman (2003-08-29 15:02) [27]
> Lorry
правильно !!!! вот ты и забрось пока на время все потуги с решением не самой простой наверно задачи и разберись для начала с констуированием классов/компонентов вообще и в принципе
ведь тот самый "глупый" вопрос
>> Declaration of "Create" differs from previous declaration
>> что делать ?
мог возникнуть (и не раз еще возникнет видимо !) и по совершенно иному поводу, никак не связанному с "сокетами" да "консолями"
это - базовые знания) ... двигаться без них дальше по пути постижения прочих "премудростей" просто нет смысла
Страницы: 1 вся ветка
Текущий архив: 2003.09.11;
Скачать: CL | DM;
Память: 0.5 MB
Время: 0.008 c