[ reiser @ 12.05.2005. 17:14 ] @
Mozda je pitanje malo konfuzno:

LongInt(pointer(self)) vraca neki broj. Sta bi ovaj broj trebao da oznacava ? Vrlo mi je bitno, jer se taj broj koristi u CreateIoCompletionPort() funkciji kao jedan od parametara, ali u VCL aplikaciji. Ja treba da prevedem kod za konzolnu aplikaciju, tako da mi treba taj broj koji onaj kod gore vraca.

Hvala
[ morlic @ 12.05.2005. 19:27 ] @
Pa pitanje jeste konfuzno jer je deo koda koji si dao nedovoljno da vidimo u kom kontekstu se izvrsava dati kod:

LongInt(pointer(self))

jer ovo self je pokazivac na instancu neke klase (vrlo bitno). On se zatim pretvara u obican pointer, i na kraju se pretvara (tumaci) kao LongInt vrednost.

CreateIoCompletionPort ima sledece parametre:

Code:

HANDLE CreateIoCompletionPort(
  HANDLE FileHandle,
  HANDLE ExistingCompletionPort,
  ULONG_PTR CompletionKey,
  DWORD NumberOfConcurrentThreads
);


gde se upotrebljava to sto ti pominjes, meni se cini jedino na mestu:

ULONG_PTR CompletionKey
[ bancika @ 12.05.2005. 20:20 ] @
a taj broj koji si dobio predstavlja 32bitnu adresu na kojoj se nalazi instanca objekta na koju pokazuje self
[ reiser @ 13.05.2005. 00:15 ] @
Da, LongInt(pointer(self)) se koristi kao treci parametar (CompletionKey).

Citat:
bancika: a taj broj koji si dobio predstavlja 32bitnu adresu na kojoj se nalazi instanca objekta na koju pokazuje self

OK, a sta ako je program bez objekata ? U stvari, program ne radi u konzolnom rezimu, ali nema ni objekata, tj nije vidljiv na ekranu. (znaci {$APPTYPE GUI} tipa)
[ morlic @ 13.05.2005. 08:43 ] @
Taj CompletionKey je jednostavno veza za rad sa setom funkcija, i neko ko je pisao ovaj tvoj kod je odlucio da taj broj dobije tako sto ce iskoristiti vrednost pokazivaca na neku instancu objekta.

To znaci da mozes da upotrebis neki drugi broj koji ces sam napraviti, recimo preko random() funkcije, i da ga drzis u nekoj promenjivoj dok ne zavrsis sa funkcijama koje ga koriste.
[ morlic @ 13.05.2005. 08:46 ] @
Zaboravih, program nije bez objekata jer koristi Self, samo je pitanje koji objekat je u pitanju. Ako das veci deo koda koji okruzuje to Self mozda ti i odgovorimo :)

Meni izgleda kao da iznad tog Self negde imas With ... liniju koda?
[ reiser @ 13.05.2005. 13:06 ] @
Hvala. Problem nisam resio, verovatno je greska u nekom drugom delu. Ja u stvari treba da motrim na promenu jednog fajla. I imam jedan primer, ali on je VCL orjentisan, znaci ima prozore i objekte, a meni treba bez GUI-a, znaci da radi u poazadini, nesto slicno kao SFP. Zato me i buni ovaj self... Ipak hvala na odgovorima.