Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Velicina DLL fajla!!!

[es] :: Pascal / Delphi / Kylix :: Velicina DLL fajla!!!

Strane: 1 2

[ Pregleda: 6275 | Odgovora: 28 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

bojan21
Bojan Zukic
Beograd

Član broj: 101113
Poruke: 251
*.60.eunet.yu.



+6 Profil

icon Velicina DLL fajla!!!18.07.2006. u 18:00 - pre 216 meseci
Pravim jedan prost program i zelim da ga podelim na delove (znaci vise DLL-ova)!!! Ipak kad iskompajliram jedan DLL on zauzima skoro 400Kb!!! Znaci oko 5 DLL-oav i to dodje na 3MB (ukljucen i exe) !!! Previse za mali program!!! Da li neko zna kako smanjiti velicinu ovih DLL-ova? Velicina im se povecava zbog unit-a koji moraju da se dodaju za neku funkciju ili proceduru! Ali ako meni svih pet DLL-ova koriste recimo i Windows.pas i Registry.pas i Forms.pas sta da uradim da oni zajednicki koriste te unit-e a ne da ih svaki posebno stavlja u svoj DLL???
 
Odgovor na temu

bojan21
Bojan Zukic
Beograd

Član broj: 101113
Poruke: 251
*.81.eunet.yu.



+6 Profil

icon Re: Velicina DLL fajla!!!18.07.2006. u 18:36 - pre 216 meseci
A da!!! I sta je to staticko a sta dinamicko povezivanje???
 
Odgovor na temu

opcode

Član broj: 101421
Poruke: 43
*.adsl.net.t-com.hr.



Profil

icon Re: Velicina DLL fajla!!!18.07.2006. u 19:35 - pre 216 meseci
Daj kod da vidim, ne mogu ti ovako napamet pomoc..


ako imas neki blabla.dll i u njemu funkciju koja glasi:

function zbroji(br1,br2:integer):integer;
begin
Result:=br1+br2;
end;



Staticko povezivanje iz programa:
Code:

function zbroji(br1,br2:integer):integer; stdcall; external 'blabla.dll' name 'zbroji';


Dinamicko povezivanje:
Code:

type tf=function (br1,br2:integer):integer;
var M:HModule;
      f:tf;
M:=LoadLibrary('blabla.dll');
@t=GetProcAddress(M,'zbroji');
writeln(t(3,3));
FreeLibrary(M);
 
Odgovor na temu

icobh
Igor Pejašinović
Network Admin
Navigo SC d.o.o.
Banja Luka

Član broj: 18738
Poruke: 1319
*.inecco.net.

Sajt: www.nsc.ba


+4 Profil

icon Re: Velicina DLL fajla!!!18.07.2006. u 21:16 - pre 216 meseci
Probaj sa UPX-om.
I ♥ ♀

Ovaj post je zlata vrijedan!
 
Odgovor na temu

Rapaic Rajko
Bgd

Član broj: 4105
Poruke: 810
..njuel-bg.customer.sbb.co.yu.



+62 Profil

icon Re: Velicina DLL fajla!!!18.07.2006. u 21:34 - pre 216 meseci
Radis u Delphi-ju, je li tako?

Onda koristi bpl-ove, a ne dll-ove. Bpl - Borland Pascal Library je unapredjena (Borlandova) verzija dll-a, i ima tu prednost sto mogu da se importuju i klase, a ne samo funkcije i procedure. Zatim, podesi se za sve bpl-ove (i exe) check-irano "Build with runtime libraries" i to je to.

Rajko
 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
82.208.201.*

ICQ: 246436949


+10 Profil

icon Re: Velicina DLL fajla!!!19.07.2006. u 07:12 - pre 216 meseci
Dllovi su ti veliki verovatno zato sto koristis unite vezane za VCL (forms, stdctrls,...). Ako mozes da izbegnes koriscenje tih unita dobio bi manji fajl i dll za tvoj program ne bi morao da se pise samo u Delphiu.

Bpl fajlovi imaju par kvaka... kada ukljucis opciju Build with runtime libraries i kompajliras program, moraces da distribuiras sve bplove koje program koristi... znaci, minimum rtl i vcl. Da bi program mogao da koristi bpl kako treba, i program i bpl moraju biti iskompajlirani u istoj verziji Delphia. Ako pravis neki program koji treba da podrzava third party dodatke, onda ti ovo nikako nece ici na ruku, ali ako sam pises program i dodatke onda ti ovo nece mnogo smetati.

I bpl i dll imaju prednosti i mane... na tebi je da odlucis sta ti vise odgovara.
 
Odgovor na temu

bojan21
Bojan Zukic
Beograd

Član broj: 101113
Poruke: 251
*.147.eunet.yu.



+6 Profil

icon Re: Velicina DLL fajla!!!23.07.2006. u 14:51 - pre 216 meseci
Pravim taj program u delphiu i za sad imam 3 dll-a sa funkcijama koje poziva program!!! Jedan je 14,5kb (ok), jedan 80kb (ok) a glavni 359kb (uuh)!!! U tom glavnom dll-u koristim unite: StdCtrls, ComCtrls, ExtCtrls... Medjutim ako stavim samo StdCtrls opet je 359kb ili ako ostavim samo ExtCtrls opet je velicina 359kb!!! Molim Vas recite mi kako samo da sttavim da nekako dll-ovi zajednicki koriste unit-e , a ne svaki da ga stavlja u svoje uses zaglavlje!!! Dll-ove koristim jer ako bude potreban neki update za program samo zamenim jedan dll!!!
 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
82.208.201.*

ICQ: 246436949


+10 Profil

icon Re: Velicina DLL fajla!!!23.07.2006. u 15:03 - pre 216 meseci
I StdCtrls i ComCtrls i ExtCtrls su sve uniti koji imaju veze sa VCL. Ako hoces da ti dll bude mali, ne smes da koristis ove unite. Nema tu pomoci... mozes da probas da ih smanjis programom UPX, ali ce i dalje biti dosta veliki. VCL je napisan tako da bude lak za upotrebu, ali je losa strana to sto izvrsni fajl jednostavno bude velik.

Svaki dll koji pravis mora sam da uzme unite koji mu trebaju i svaki u kojem imas u uses delu neki unit koji ima veze sa VCL ce biti velik.
Mozda bi mogao da postavis ovde kod pa ce ti neko sa vise iskustva pomoci da napises dll koji ce raditi ono sto zelis i bez VCL unita.
 
Odgovor na temu

bojan21
Bojan Zukic
Beograd

Član broj: 101113
Poruke: 251
*.147.eunet.yu.



+6 Profil

icon Re: Velicina DLL fajla!!!23.07.2006. u 15:10 - pre 216 meseci
Taj dll koristim da prevedem program!!! Ako recimo program koristi engleski i srpski i korisnik hoce da prevede program sa jednog na drugi on poziva dll koji ce prevesti program!!! Zato moram da Koristim StdCtrls (za labele i ostalo), ExtCtrls i ComCtrls!!! Hvala u svakom slucaju!!!
 
Odgovor na temu

bojan21
Bojan Zukic
Beograd

Član broj: 101113
Poruke: 251
*.147.eunet.yu.



+6 Profil

icon Re: Velicina DLL fajla!!!23.07.2006. u 15:11 - pre 216 meseci
A da!!! Gledam sad neki program na kompu koji takodje koristi dll-ove da prevede program (ima english.dll , serbian.dll , denmark.dll ... i svaki zauzima oko 80kb)!!! Kako ja to da postignem!!!
 
Odgovor na temu

bojan21
Bojan Zukic
Beograd

Član broj: 101113
Poruke: 251
*.147.eunet.yu.



+6 Profil

icon Re: Velicina DLL fajla!!!23.07.2006. u 15:13 - pre 216 meseci
Ili predlozi mi koje je najbolje resenje za program ako planiram da pravim update za njega a program je veoma mali (oko 3MB) i prost (tipa ScreenShot manager-a)!!!???
 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
82.208.201.*

ICQ: 246436949


+10 Profil

icon Re: Velicina DLL fajla!!!23.07.2006. u 15:18 - pre 216 meseci
Zasto moras da koristis te unite!?

Mozes dllu da posaljes npr. MainForm:ButtonOpen:Caption, a dll u tabeli pronadje string koji tu treba da stoji i posalje ti npr: &Otvori, zatim posaljes npr. MainForm:ButtonOpen:Font, a dll ti vrati Tahoma:10:Bold+Italic, pa posaljes npr. MainForm:ButtonOpen:Hint, a dll vrati Klikom na ofo dugme otvarate fajl, itd, itd...
Ne samo sto mozes da uradis lokalizaciju na ovaj nacin, nego mozes svaki property da definises u dllu.
 
Odgovor na temu

bojan21
Bojan Zukic
Beograd

Član broj: 101113
Poruke: 251
*.147.eunet.yu.



+6 Profil

icon Re: Velicina DLL fajla!!!23.07.2006. u 15:25 - pre 216 meseci
Nisam ovo razumeo!!! Kakav je ovo kod:

Code:

MainForm:ButtonOpen:Caption



zar ne treba da stoje tacke umesto dvotacki???
I kakve tabele???

Ako moze tako onda je problem resen :)!!!
 
Odgovor na temu

bojan21
Bojan Zukic
Beograd

Član broj: 101113
Poruke: 251
*.147.eunet.yu.



+6 Profil

icon Re: Velicina DLL fajla!!!23.07.2006. u 15:26 - pre 216 meseci
Nisam ovo razumeo!!! Kakav je ovo kod:

Code:

MainForm:ButtonOpen:Caption



zar ne treba da stoje tacke umesto dvotacki???
I kakve tabele???

Ako moze tako onda je problem resen !!!
 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
82.208.201.*

ICQ: 246436949


+10 Profil

icon Re: Velicina DLL fajla!!!23.07.2006. u 15:50 - pre 216 meseci
Ok... sad cu malo da ti sazvacem ovo :)

Iz dlla exportujes funkciju koja izgleda npr. ovako:
Code:
function GetLocalizedData(ControlProperty: PChar; Data: PChar; var DataSize: Integer): Integer; stdcall;

Dakle... u prvom parametru saljes string kojim trazis sta hoces, drugi parametar je string u kojem ces dobiti rezultat, treci parametar predstavlja koliko mesta imas u tom stringu.

Dll ce da uzme ControlProperty strign i recimo da u njemu pise MainForm:ButtonOpen:Caption... svoj dll mozes da hardcodiras i da napises nesto kao:
Code:
if ControlProperty = 'MainForm:ButtonOpen:Caption' then
  vrati Otvori

mada bi najbolje bilo na imas neki script fajl u kome ces definisati sta dll da vrati kad treba tako da neces morati da pises dll za svaki jezik nego da pises u obicnom notepadu samo skriptu koja bi izgledala recimo ovako:
Code:
MainForm:ButtonOpen:Caption="Otvori"


Kad dobijes string koji treba da vratis, prvo pogledas da li je Data razlicito od nil i da li je DataSize vece ili jednako s duzinom stringa koji treba da vratis. Ako je tako samo upises string u Data i vratis duzinu stringa koju si upisao (sve je proslo ok). Ako je Data nil ili u DataSize kaze da ima manje mesta nego sto treba, onda samo vratis duzinu stringa koju treba da upises.

u glavnom programu funkciju pozivas npr ovako:
Code:
procedure NekaProcedura;
var
  DataString: String;
begin
  SetLength(DataString, GetLocalizedData('MainForm:ButtonOpen:Caption', nil, 0));
  GetLocalizedData('MainForm:ButtonOpen:Caption', PChar(DataString), Length(DataString));
  btnOpen.Caption := DataString;
end;


Nadam se da je sad bilo jasno.
 
Odgovor na temu

bojan21
Bojan Zukic
Beograd

Član broj: 101113
Poruke: 251
*.211.eunet.yu.



+6 Profil

icon Re: Velicina DLL fajla!!!23.07.2006. u 15:56 - pre 216 meseci
Hvala ti probacu pa cu da ti javim!!! I jos jedno pitanje: kako iz dll-a da direktno pozovem promenu na primer:

Code:

procedure ChangeCaption; stdcall;
begin
Form1.Caption:= 'Dll';
end;


Meni prijavljuje gresku kad ovu funkciju pozovem iz aplikacije!!!
 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
82.208.201.*

ICQ: 246436949


+10 Profil

icon Re: Velicina DLL fajla!!!23.07.2006. u 16:07 - pre 216 meseci
Obican dll ne moze to da radi, ali zato moze bpl :)

Pogledaj u helpu razlike izmedju dll i bpl biblioteka.

P.S. Slobodno me cimni ba neki od messengera pa cu ti pomoci.
 
Odgovor na temu

bojan21
Bojan Zukic
Beograd

Član broj: 101113
Poruke: 251
*.211.eunet.yu.



+6 Profil

icon Re: Velicina DLL fajla!!!23.07.2006. u 16:23 - pre 216 meseci
Cekaj malo!!! Kako da napravim bpl??? Gde le opcija za bpl u New->???
 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
82.208.201.*

ICQ: 246436949


+10 Profil

icon Re: Velicina DLL fajla!!!23.07.2006. u 17:57 - pre 216 meseci
Bpl pravis tako sto izaberes File->New->Other->Package (tako je bar u Delphi 7 ako se ne varam).

Obrati paznju i na sve nezeljene posledice koje imas ako hoces da koristis bpl. Program moras da linkujes sa runtime bibliotekama i zbog toga uz svoj program moras da saljes i vcl.bpl, rtl.bpl i svaki bpl za kontrole koje koristis. Takodje, ako ikad predjes na neku drugu verziju Delphia, bpl koji kompajliras nece biti kompatibilan sa exe fajlom.
 
Odgovor na temu

bojan21
Bojan Zukic
Beograd

Član broj: 101113
Poruke: 251
*.75.eunet.yu.



+6 Profil

icon Re: Velicina DLL fajla!!!23.07.2006. u 19:27 - pre 216 meseci
Pa oce onda manje zauzimati program sa bpl fajlovima ili sa dll-ovima (ako je razlika do 300kb onda nista)!!!???
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Velicina DLL fajla!!!

Strane: 1 2

[ Pregleda: 6275 | Odgovora: 28 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.