Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.53 MB
Время: 0.027 c
4-33852
Th
2003-07-08 11:00
2003.09.11
Искусственный вызов Window Menu приложения


9-33415
MeF88
2003-03-06 10:42
2003.09.11
Когда ж будет реальный GLScene


14-33753
Пробегал
2003-08-21 22:22
2003.09.11
Зачем вы баните прокси?


3-33439
P0tia
2003-08-21 19:05
2003.09.11
Про excel


1-33536
dez
2003-09-01 19:03
2003.09.11
CoInitialize has not been called