[ anon68680 @ 30.07.2007. 10:28 ] @
Dakle potrebna mi je sto manja aplikacija, a da bih to izveo moram pre svega da izbacim Forms unit. Posto ne mogu jednostavno da ga izbacim iz uses clause sklonio sam ceo unit.pas i koristim Project1.dpr fajl za pisanje coda.
Da bi program ostao aktivan i po zavrsetku svih komandi ubacio sam while loop sa GetMessage() i sve to izgleda ovako nekako:

Code:

program Project1;

uses
  Windows;

var
  clsocket: TClientSocket;

{$R *.res}

begin

  while GetMessage(Msg,0,0,0) do
   begin
    TranslateMessage(Msg);
    DispatchMessage(Msg);
   end;
end.


Napravio sam svoju classu kako bih mogao da definisem svoje event handlere. Potrebni su mi handleri za TClientSocket ili TidIRC (jos razmisljam o ovome, ali i nije mnogo bitno za moj trenutni problem). Sve je to izgledalo ovako:

Code:

program Project1;

uses
  Windows,
  ScktComp;

  type
   TClsocket = class(TClientSocket)
   procedure onWrite2(Sender: TObject; Socket: TCustomWinSocket);
   end;

var
  Msg: Tmsg;
  clsocket: TClientSocket;

{$R *.res}

procedure TClsocket.onWrite2(Sender: TObject; Socket: TCustomWinSocket);
begin
{wirte stuff... nebitno }
end;

begin
TClsocket.Create(clsocket);
clsocket.OnWrite:=TClsocket.onwrite2; >>>>> ovde se javlja error tipa, Incompatible types TSocketNotifyEvent and procedure
  while GetMessage(Msg,0,0,0) do
   begin
    TranslateMessage(Msg);
    DispatchMessage(Msg);
   end;
end.


Gde sam pogresio? Ne kapiram bas najbolje ovo sa classama..
[ NemesisMMX @ 30.07.2007. 11:06 ] @
Mislim da ne treba da nasledjujes svoju klasu iz TClientSocket vac da clentsocket bude filed tvoje klase.
U konstruktoru moras da kreiras instancu i da napravis povezivanje.
Onda napravis instancu svoje klase u kodu aplikacije:

type
TClsocket = class
procedure onWrite2(Sender: TObject; Socket: TCustomWinSocket);
FClient : TClientSocet;
end;

procedure TClsocket.onWrite2(Sender: TObject; Socket: TCustomWinSocket);
begin
{wirte stuff... nebitno }
end;

constructor TClSocket.Create;
begin
CLient := TClientSocket.Create(Application);
Client.OnWrite := onWrite2;
end;

begin
clsocket := TClsocket.Create(aplication);
end;
[ anon68680 @ 31.07.2007. 10:06 ] @
zar ne treba i constructor gore da se definise? A i brljavi mi sa .Create.. valjda zato sto ne koristim nikakve unite.
[ NemesisMMX @ 31.07.2007. 10:19 ] @
Da,
type
TClsocket = class
procedure onWrite2(Sender: TObject; Socket: TCustomWinSocket);
FClient : TClientSocet;
Constructor Create;
end;

zaboravio sam.
Kako ti brljavi sa Create? Jel mozes malo detaljnije da objasnis?
Ja sam stavio da je owner application. Application je definisan u forms unitu tako da ako neces da koristis forms jednostavno umesto application koristi nil.
I nemoj da zaboravis da unistis objekte pri izlasku iz aplikacije.
Takodje mi nije jasno zasto ne koristis unite.
Ne mora svaki unit da ima formu.
Jednostavno izaberes New->Unit.
Izbaci forms iz uses klauzule kad ga vec ne koristis i to je to.
[ staleks @ 31.07.2007. 12:57 ] @
A zbog cega uopste onda pocinjes da pravis projekat kao WinApplication ? Zasto jednostavno ne pravis obicnu Console app. ?

Onda nemas potrebe da izbacujes forme, nego po potrebi dodajes unit-e koji tebi odgovaraju.

Pozdrav
[ anon68680 @ 01.08.2007. 22:30 ] @
.Create brljavi u smislu da kaze: Unknown function ili tako nesto.