Форум: "Основная";
Текущий архив: 2002.04.25;
Скачать: [xml.tar.bz2];
ВнизВопрос, наверно, по основам. Создаю приложение без формы... Найти похожие ветки
← →
Fredericco (2002-04-11 10:36) [0]Код юнита:
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 10:38) [1]Совсем забыл. В юните в процедуре
TF.Creat
есть еще строкаF:=TF.Create;
← →
Anatoly Podgoretsky (2002-04-11 10:46) [2]procedure TF.Creat(); это наверно очепятка, надо .Create;
Fredericco © (11.04.02 10:38)
Где эта строка и когда вызывается?
← →
Fredericco (2002-04-11 11:08) [3]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.
← →
SVM (2002-04-11 12:23) [4]Организуй вместо Application.Run цикл сообщений. Или создай главное окно.
← →
Anatoly Podgoretsky (2002-04-11 12:29) [5]Тебе что стека не жалко, ты же пытаешь рекурсивно сам себя создавать
constructor TF.Create();
begin
ShowMessage("Работает");
F:=TF.Create;
Тебя спасло только то, что ты нигде не создал первого экземпляра объета. Создавать нужно до run
← →
Fredericco (2002-04-11 12:57) [6]Anatoly Podgoretsky >> Все понял, кроме одного, что писать до строчки
Application.Run;
?
← →
Fredericco (2002-04-11 12:58) [7]SVM >> Как раз окно-то мне и ненужно. А что такое цикл сообщений?
← →
Anatoly Podgoretsky (2002-04-11 13:06) [8]Объект надо создать, он у тебя нигде не создается.
← →
Fredericco (2002-04-11 13:22) [9]Anatoly Podgoretsky >>
F:=TF.Create;
не создает?
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.04.25;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.005 c