[ stalker @ 03.09.2004. 19:53 ] @
Evo, ovako. Ja ne znam delphi, kolega ne zna c. Ja imam klasu
Code:

class klasa{
public:
    int f1(void);
    ...
};
...

Treba pozvati funkciju iz dll-a (napisanog na delphiju) ciji bi prototip na c-u izgledao
int poziv(HWND,klasa*,...);
E, sad, kako ce on to uspeti da izvede i kako ce pozivati funkcije iz moje klase. Za HWND nam je jasno, uglavnom za sve standardne tipove postoje ekvivalenti, ali sta sa klasom? Pretpostavljamo da on mora da ima neku definiciju/prototip (kako god da se to zove u delphiju) moje klase? Da li je neko radio nesto slicno i kako bi to moglo da se izvede?
Uf, ako nije jasno, pojasnicu jos...
[ -zombie- @ 03.09.2004. 23:55 ] @
ako taj C++ nije rađen u borlandovom C++ builderu, verujem da neće moći to tako direktno..

C++ klase i Delphi klase nemaju istu strukturu u memoriji, tako da to ima malo šanse da proradi..

preporučujem ili čist DLL interfejs, ili COM server/klijent.. (to je bar u delphiju lako)
[ morlic @ 04.09.2004. 00:00 ] @
Klase Delphi-a i C++ nisu kompatibilne. Mozes poslati ili primiti pokazivac ali nista ne vredi jer funkcionisu drugacije. Pod NET platformom je druga prica i razliciti programski jezici dele istu strukturu za klase. Imas dva resenja: koristiti interfejse ili uraditi klasicnu komunikaciju preko procedura/funkcija.
[ stalker @ 04.09.2004. 12:10 ] @
A sta kazete na ovo: ja njemu prosledim hwnd mog prozora sto mu je kljucno. On iz moje klase treba da uzima neke podatke (max. 6 takvih). Da se to uradi preko WM poruka? On ima moj hwnd. Salje mi SendMessage(hwnd,WM_NJEGOVZAHTEV,0,0), a ja to primam,zovem tu klasu,obradjujem i vracam rezultat? Ne verujem da bi bilo komplikovano, posebno jer ne bi bilo mnogo poruka, samo jel bi bilo cudno il' smesno?
[ morlic @ 04.09.2004. 16:30 ] @
Nije ni cudno ni smesno, samo je pitanje sta bolje ispunjava zahtev. Ako vec imas dll onda je bolje da radis preko procedura i funkcija jer imas na raspolaganju proizvoljan broj i tip parametara u odnosu na SendMessage.
[ vladab @ 04.09.2004. 19:02 ] @
A da se ti podaci posalju u text fajl, koji ce da se obradjuje u Delphiju, posto nema puno podataka i treba da se odradi jednom ili 2 puta u toku rada?
[ morlic @ 04.09.2004. 20:41 ] @
Mislim da je bolje da vezba ovu razmenu podataka direktno dll-exe :)
[ stalker @ 04.09.2004. 21:40 ] @
Procedure i/ili funkcije ne dolaze u obzir, posto ja pozivam jednu funkciju, a on treba da pokupi te podatke iz mog programa, a ja ne znam kada, tako da prakticno dll treba da zove moj program i moje funkcije, a ne ja njega!? Paradoksalno mozda...
[ morlic @ 04.09.2004. 23:46 ] @
Nista paradoksalno, obicne callback funkcije. Dosta Windows API stvari radi pomocu takvog sistema.
[ stalker @ 05.09.2004. 00:41 ] @
Da, ali ako ja imam
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
npr. kako delphi vidi i poziva to? Ako je ovo moguce, onda je to lepa alternativa WM_MAMBODZAMBO i vredi razmisliti o njoj
[ morlic @ 05.09.2004. 11:34 ] @
Pogledaj kako funkcionisu EnumXXX funkcije u Windows.pas fajlu. One rade preko mehanizma povratnih poziva na liniji c/c++ - Delphi.