![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос, наверно, по основам. Создаю приложение без формы... [D4, Win95/98, WinME]
Fredericco © (2002-04-11 10:36:00)Код юнита:
unit Ulc;
interface
uses
ExtCtrls, ScktComp,Dialogs;
type
TF=class(TObject)
ClientSocket1: TClientSocket;
Timer1: TTimer;
procedure Creat();
procedure Tmr(Sender: TObject);
procedure DisCon(Sender: TObject;
Socket: TCustomWinSocket);
end;
var
F:TF;
implementation
procedure TF.Creat();
begin
ShowMessage("Работает");
ClientSocket1:=TClientSocket.Create(nil);
Timer1:=TTimer.Create(nil);
ClientSocket1.Host:="localhost";
ClientSocket1.Port:=20000;
ClientSocket1.OnDisconnect:=DisCon;
Timer1.OnTimer:=Tmr;
end;
procedure TF.DisCon(Sender: TObject;
Socket: TCustomWinSocket);
begin
ClientSocket1.Free;
Timer1.Free;
F.Free
end;
procedure TF.Tmr(Sender: TObject);
begin
if ClientSocket1.Active=True then ClientSocket1.Socket.SendText("aa");
end;
end.
Код программы:
program Prlc;
uses
Forms,
Ulc in "Ulc.pas";
{$R *.RES}
begin
Application.Initialize;
Application.Run;
end.
Вообщем цель программы вы уже наверно поняли, только вот как сделать чтобы все это работало? ShowMessage в юните не всплывает и когда я нажимаю Run программа открывается и тут же закрывается :-(
Заранее благодарен.
Fredericco (2002-04-11 13:22:00) [1]Anatoly Podgoretsky >>
F:=TF.Create;не создает?
Anatoly Podgoretsky (2002-04-11 13:06:00) [2]Объект надо создать, он у тебя нигде не создается.
Fredericco (2002-04-11 12:58:00) [3]SVM >> Как раз окно-то мне и ненужно. А что такое цикл сообщений?
Fredericco (2002-04-11 12:57:00) [4]Anatoly Podgoretsky >> Все понял, кроме одного, что писать до строчки
Application.Run;
?
Anatoly Podgoretsky (2002-04-11 12:29:00) [5]Тебе что стека не жалко, ты же пытаешь рекурсивно сам себя создавать
constructor TF.Create();
begin
ShowMessage("Работает");
F:=TF.Create;
Тебя спасло только то, что ты нигде не создал первого экземпляра объета. Создавать нужно до run
SVM (2002-04-11 12:23:00) [6]Организуй вместо Application.Run цикл сообщений. Или создай главное окно.
Fredericco (2002-04-11 11:08:00) [7]Anatoly Podgoretsky >> Привожу пример юнита с поправками:
unit Ulc;
interface
uses
ExtCtrls, ScktComp,Dialogs;
type
TF=class(TObject)
ClientSocket1: TClientSocket;
Timer1: TTimer;
constructor Create();
procedure Tmr(Sender: TObject);
procedure DisCon(Sender: TObject;
Socket: TCustomWinSocket);
end;
var
F:TF;
implementation
constructor TF.Create();
begin
ShowMessage("Работает");
F:=TF.Create;
ClientSocket1:=TClientSocket.Create(nil);
Timer1:=TTimer.Create(nil);
ClientSocket1.Host:="localhost";
ClientSocket1.Port:=20000;
ClientSocket1.OnDisconnect:=DisCon;
Timer1.OnTimer:=Tmr;
end;
procedure TF.DisCon(Sender: TObject;
Socket: TCustomWinSocket);
begin
ClientSocket1.Free;
Timer1.Free;
F.Free
end;
procedure TF.Tmr(Sender: TObject);
begin
if ClientSocket1.Active=True then ClientSocket1.Socket.SendText("aa");
end;
end.
Anatoly Podgoretsky (2002-04-11 10:46:00) [8]procedure TF.Creat(); это наверно очепятка, надо .Create;
Fredericco © (11.04.02 10:38)
Где эта строка и когда вызывается?
Fredericco (2002-04-11 10:38:00) [9]Совсем забыл. В юните в процедуре
TF.Creatесть еще строкаF:=TF.Create;