Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос, наверно, по основам. Создаю приложение без формы... [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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо