Waga aplikacji.

Bezel21

Użytkownik
Dołączył
Maj 22, 2007
Posty
104
Cześć
<

Mam mały problem, - jest nim waga aplikacji konsolowej.
Składa się ona z krótkiego kodu:

Kod:
program Project2;

{$APPTYPE CONSOLE}

uses
 SysUtils, HGGk;

var
  Hgg : THggk;

begin
  Hgg := THggk.Create(nil);
  Hgg.Number := StrToInt('CENZOR XD');
  Hgg.Password := 'CENZOR XD';
  Hgg.Host := '91.197.13.33';
  Hgg.Status := UsAvailable;
  Writeln('Laczenie...');
try
  Hgg.Connect(-1);
finally
  Writeln('Polaczono');
  Readln;
end;

end.

I działa, ale nie mam pojęcia dla czego waży aż 428 kb!
Rozmiar komponentu HGGK - 46,3 KB (bajtów: 47 507).
Proszę o pomoc, wyjaśnienia
smile.gif
 

Mo4x

Były Moderator
Dołączył
Grudzień 26, 2005
Posty
704
Może rozmiar jest taki przez to, że w sekcji Uses pliku HGGk.pas jest:
Kod:
uses
  Windows, Messages, SysUtils, Classes, ExtCtrls,
  IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient;
Ja bym spróbował wywalać po kolei i sprawdzać czy wciąż działa, jeżeli działa to znaczy, że było niepotrzebne
<
 

Mo4x

Były Moderator
Dołączył
Grudzień 26, 2005
Posty
704
To przez te moduły, usunąłem z Uses plik ExtCtrls i od razu rozmiar aplikacji zmienił się na około 110 KB.
Ten komponent HGGk, uzywa zbyt "wysokopoziomowych" komponentów. Jak ja tam widziałem na przykład TTimer, a przecież wystarczyłaby funkcja winapi SetTimer i rozmiar o wiele mniejszy.

Myślę, że jedyny sposób to przepisać komponent HGGk, aby był lżejszy.
 

Bezel21

Użytkownik
Dołączył
Maj 22, 2007
Posty
104
<div class='quotetop'>CYTAT(Mo4x @ 14.06.2009, 20:14) <{POST_SNAPBACK}></div>
To przez te moduły, usunąłem z Uses plik ExtCtrls i od razu rozmiar aplikacji zmienił się na około 110 KB.
Ten komponent HGGk, uzywa zbyt "wysokopoziomowych" komponentów. Jak ja tam widziałem na przykład TTimer, a przecież wystarczyłaby funkcja winapi SetTimer i rozmiar o wiele mniejszy.

Myślę, że jedyny sposób to przepisać komponent HGGk, aby był lżejszy.[/b]

Za dużo roboty z tym przepisywaniem
smile.gif
ale dzieki za sposób
<
 

thc_flow

Zbanowany
Dołączył
Listopad 13, 2008
Posty
649
No niestety ale Delphi ma to do siebie że używa komponentów które są w paczkach, przez co kod jest łatwiejszy do wyskrobania ale dostajemy też masę funkcji których nie używamy, wystarczy używać WinAPI zamiast gotowych paczek a waga będzie o wiele mniejsza. Przy okazji, zobacz jakimś edytorem RES czy nie ma w exeku dołączonych bitmap i kursorów które w niektórych komponentach się doklejają a nie są wcale potrzebne.
 

thc_flow

Zbanowany
Dołączył
Listopad 13, 2008
Posty
649
@kanar, no to miłej zabawy w grzebaniu w kilkudziesięciu plikach ;P Ogólnie to polecam Lazarusa, jakoś tak mniejsze programy robi;)
 

Legalnl

Użytkownik
Dołączył
Październik 8, 2008
Posty
828
Zawsze jeszcze mozna użyć kompresora UPX, chcąc tylko zmniejszy jego wage
<
ale masa bedzie taka sama
<
 

adikx

Użytkownik
Dołączył
Maj 21, 2007
Posty
415
Chcesz mieć mały exe. Musisz wywalić wszystkie moduły z wiązane z klasami. Dzięki temu będzie ważyć koło 50 kb ale tylko winapi i biblioteki systemowe.
 

Bezel21

Użytkownik
Dołączył
Maj 22, 2007
Posty
104
Pozostawiłem tylko:

Kod:
uses
SysUtils, Classes, ExtCtrls, IdTCPClient;

Ponieważ bez tych modułów kod nie działa, a całego źródła nie mam sił edytować, ktoś chętny?
smile.gif
 

Mo4x

Były Moderator
Dołączył
Grudzień 26, 2005
Posty
704
Możesz jeszcze wyrzucić ExtCtrls, tylko wtedy będziesz musiał z Timer'ów przepisać na WinAPI SetTimer();. To nie jest wcale dużo do pisania.
 
Do góry Bottom