Форум: "Сети";
Текущий архив: 2003.03.17;
Скачать: [xml.tar.bz2];
ВнизСобытия... Найти похожие ветки
← →
WingGod (2003-01-24 02:45) [0]Расмотрим ситуацию...
Формы нет (т.е. кодим прям в проэкте).
Нужно создать компонент TClientSocket, с этим проблем нет,
Но вот как от него поймать события, типа OnConnect, OnRead,OnWrite...
если ктонить понял плиз хелп...
← →
Danlicha (2003-01-24 02:59) [1]Написать метод объекта с параметрами, такие требует этот сокет от обработчика и присвоить этот метод событию (а это не что иное, как просто свойство типа метод). Удачи!
← →
А (2003-01-24 03:52) [2]Удалено модератором
← →
Viktor Kushnir (2003-01-24 08:47) [3]Тороян? :) А вообще можно TClientSocet в отдельном модуле UNIT инициализировать. И там сделать то, что посоветывал Danlicha ©
← →
Digitman (2003-01-24 09:52) [4]нет смысла отказываться от формы при использовании TClientSocket.
потому что этот объект так или иначе все равно использует модуль Forms
← →
nikulin (2003-01-24 10:03) [5]2 Digitman
А в модуле ScktComp вроде нет ссылки на Forms...
Где же TClientSocket использует Forms????
← →
Digitman (2003-01-24 10:40) [6]Как это нет ? А это что :
(Д5)
implementation
uses Forms,..; ?
печально только то, что подцепляется модуль Forms
ради вызова только двух ф-ций - AllocateHWnd() и DeallocateHWnd()
← →
WingGod (2003-01-24 13:32) [7]плиз, если не трудно напишите пример исходника...
← →
Anatoly Podgoretsky (2003-01-24 13:39) [8]Так сообщением выше
← →
WingGod (2003-01-24 13:43) [9]Danlicha ©, приведи исходник того что ты написал...ок?
← →
vuk (2003-01-24 13:51) [10]to Digtman:
>Как это нет ? А это что :
В D6 этого уже нет. В принципе, в scktcomp ссылка на forms была нужна исключительно из-за AllocateHWND. В D6 все это хозяйство перенесено в classes.
Кстати, туда же переехал и TDataModule. Поэтому в проектах, где формы не нужны, можно использовать модули данных.
← →
Anatoly Podgoretsky (2003-01-24 13:56) [11]Все может быть, но автор вопроса тщателбн скрывает версию Дельфи.
← →
Digitman (2003-01-24 14:05) [12]
> vuk
Не возражаю. У меня - Д5, поэтому конкретностей на эту тему по Д6 не имею
← →
WingGod (2003-01-24 21:01) [13]ктонить может дописать
var
s:TClientSocket;
begin
s:=TClientSocket;
s.Onconnect=????????
← →
Чих-пых (2003-01-25 04:29) [14]s.OnConnect := YourProcedureName;
где YourProcedureName - это имя вызываемой процедуры, то есть процедуры обработки события OnConnect.
Посмотри, как её объявить надо. Обычно...
procedure YourProcedureName(Sender : TObject);
begin
end;
Это обычный TNotifyEvent.
Но с твоим TClientSocket не знаю, посмотри в хэлп. Ну а если не понятно - создай на форме где-нибудь (в другом проекте) этот TClientSocket, задай ему обработчик ОнКоннекта, а потом скопируй эту процедуру в свой проект.
← →
Чих-пых (2003-01-25 04:30) [15]s.OnConnect := YourProcedureName;
где YourProcedureName - это имя вызываемой процедуры, то есть процедуры обработки события OnConnect.
Посмотри, как её объявить надо. Обычно...
procedure YourProcedureName(Sender : TObject);
begin
end;
Это обычный TNotifyEvent.
Но с твоим TClientSocket не знаю, посмотри в хэлп. Ну а если не понятно - создай на форме где-нибудь (в другом проекте) этот TClientSocket, задай ему обработчик ОнКоннекта, а потом скопируй эту процедуру в свой проект.
P.S. Сейчас создавать объекты уже не модно?
s:=TClientSocket.Create; // или Create(smthg)...
P.P.S. Это Паскаль а не Си! :)
s.Onconnect:=????
^^
← →
WingGod (2003-01-26 06:36) [16]program Project1;
uses Dialogs,ScktComp;
procedure Connect(Sender:Tobject; socket:TCustomWinSocket);
begin
showmessage("Connected");
end;
var
s:TClientSocket;
begin
s.OnConnect:=connect;
s:=TClientSocket.Create(nil);
...
ругается....дельфя...
Incompatible types: " method pointer and regular procedure"
как лечить?...
← →
Sha (2003-01-26 11:45) [17]
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils,
Dialogs,
ScktComp;
type
THelper=class
procedure OnConnect(Sender: TObject; socket: TCustomWinSocket);
end;
procedure THelper.OnConnect(Sender: TObject; socket: TCustomWinSocket);
begin;
showmessage("Connected");
end;
var
h: THelper;
s: TClientSocket;
begin;
h:=THelper.Create;
s:=TClientSocket.Create(nil);
s.OnConnect:=h.OnConnect;
//............
s.Free;
h.Free;
end.
← →
Sha (2003-01-26 11:48) [18]еще вариант:
@s.OnConnect:=@YourProcedureName;
← →
Song (2003-01-26 11:53) [19]Не откомпилится. Нет указания базового класса для наследника.
← →
Sha (2003-01-26 12:02) [20]> Song © (26.01.03 11:53)
> Не откомпилится. Нет указания базового класса для наследника.
Это по поводу Sha © (26.01.03 11:45) ?
Странно, у меня компилится отлично - проверял.
← →
Чих-пых (2003-01-26 18:08) [21]
> Не откомпилится. Нет указания базового класса для наследника.
Ты про это THelper=class ?
Почитай хэлп, там чётко написано, что если у наследника не указан базовый класс, автоматически считается, что это наследник TObject.
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2003.03.17;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.008 c