Autor Beitrag
Aya
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: Sa 04.06.05 21:12 
Hi,

ich bastle grad an einer 64k Demo rum und hab da ein mehr oder weniger großes problem *g*

Der reine Code zum Fenster erstellen schluckt 8.5kb der EXE Datei... geht das mit Delphi noch irgendwie kleiner???

Denn das ist mir dann doch noch etwas zu groß.. und möglich muß es sein, denn es gibt viele Fenster-Programme die kleiner als 4kb sind.
(Mein OpenGL kram den ich bisher drin hab verbraucht grad mal 4kb und das sind schon knapp 100.000 Vertices mit Texturen... *g*)

Hier mal mein Code für's Fenster erstellen:


ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
program Project1;

uses
  K64Windows,
  K64Messages;

const
  ClassName = 'K64';
  AppName = 'Koshigaya Studios - 64k Demo';

var
  Handle: hWnd;
  Go: Array[0..255of Boolean;
  WindowWidth: Integer = 1280;
  WindowHeight: Integer = 960;


function WndProc(hWnd: HWND; message: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
begin
  Result:=0;
  Case message of
    WM_CREATE: begin

    end;
    WM_DESTROY, WM_CLOSE: begin
      PostQuitMessage(0);
    end;
    WM_KEYDOWN: begin
      Go[wParam]:=true;
    end;
    WM_KEYUP: begin
      Go[wParam]:=false;
    end;
    WM_SIZE: begin

    end;
    else begin
      Result:=DefWindowProc(hWnd,message,wParam,lParam);
      exit;
    end;
  end;
end;

var
  wc: TWndClassEx = (
    cbSize          : SizeOf(TWndClassEx);
    Style           : CS_HREDRAW or CS_VREDRAW;
    lpfnWndProc     : @WndProc;
    cbClsExtra      : 0;
    cbWndExtra      : 0;
    hbrBackground   : COLOR_APPWORKSPACE;
    lpszMenuName    : nil;
    lpszClassName   : ClassName;
    hIconSm         : 0;
  );
  msg: TMSG;
  done: Boolean = false;
begin
  wc.hInstance  := hInstance;
  wc.hIcon      := LoadIcon(0,IDI_APPLICATION);
  wc.hCursor    := LoadCursor(0,IDC_ARROW);
  RegisterClassEx(wc);
  Handle:=CreateWindowEx(0,ClassName,AppName,WS_CAPTION or WS_VISIBLE or WS_SYSMENU or WS_MINIMIZEBOX or WS_MAXIMIZEBOX or WS_SIZEBOX,Integer(CW_USEDEFAULT),Integer(CW_USEDEFAULT),WindowWidth,WindowHeight,0,0,hInstance,nil);
  ShowWindow(Handle,SW_MAXIMIZE);
  while not done do begin
    if (PeekMessage(msg,0,0,0,PM_REMOVE)) then begin
      if msg.message=WM_QUIT then begin
        done:=true;
      end else begin
        TranslateMessage(msg);
        DispatchMessage(msg);
      end;
    end;
  end;
end.


Wie ihr steht hab ich bei den Uses schon eigene Units gemacht... in der K64Messages und K64Windows ist nurnoch das drin was wirklich benötigt wird (beide nurnoch ca. 30-40 Zeilen).

Ich hab auch nirgendwo noch ne andere Unit eingebunden.

Und jetzt kann mir hoffentlich einer von den NonVCL'lern sagen wie ich es noch kleiner bekomme ;)

Au'revoir,
Aya~

PS: Mit ExePacker wird's von 8.5 auf 5.5kb gepackt.. immernoch zuviel ;)

_________________
Aya
I aim for my endless dreams and I know they will come true!
Coder
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1383
Erhaltene Danke: 1

WinXP
D2005 PE
BeitragVerfasst: Sa 04.06.05 21:18 
Mit dem Resource Hacker kann man auch Resourcen aus exe-Dateien löschen.
Das meiste was ich gefunden hab konnte ich ohne Probleme rauslöschen. zb die Cursor.
Weis nich ob das dir was hilft. :lol:
3rdnuss
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 139



BeitragVerfasst: Sa 04.06.05 21:36 
Wo hast du denn da Cursor gefunden? Ich hab das gerade auch mit dem ResHacker und anderen Programmen wie ExeScope versucht. Aber ich hab da nix rauslöschbares gefunden?

Aber ich denke nicht, dass man das Prorgramm viel kleiner bekommt.
Also bei Luckies Beispielen (irgendwo auf seiner HP) sind die Programme auch nicht kleiner.
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Sa 04.06.05 21:44 
das prog klappt nur bei delphi programmen soweit ich weis.

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
raziel
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2453

Arch Linux
JS (WebStorm), C#, C++/CLI, C++ (VS2013)
BeitragVerfasst: So 05.06.05 06:09 
Selbst mit Assembler kommst du bei einigen Assembler/Linker Gespannen nicht unter 4kB. Knapp über 1kB geht schon alleine für die Header drauf. Es würde kleiner gehen, aber nur mit viel Mühe+Hexeditor+Genaueres Studium der PE-Exe-Header. ;)

_________________
JSXGraph
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: So 05.06.05 06:52 
Was soll denn der Zweck solcher Aktionen sein ? :shock: Wem nützt denn heutzutage eine Festplatten-Ersparniss von 10 KB ?? Die deutsche Bank würde zurecht sagen, das wären Peanuts um die sich keiner kümmern wird. :mrgreen:

_________________
Gruß
Hansa
mimi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: So 05.06.05 07:29 
ganz einfach: Es gibt ganze demo sezne die mit 64 KB rum spielen und toll sachen damit schaffen, es ist eine Sport art wenn man so möchte, es gibt viele messen und veranstalltungen zu diesem thema...

@Aya ist ist möglich ich habe mal irgenwo beispiele gesehen asm+winapi und da waren die exe dateien kleiner als 4 KB, ich weiß leider nicht mehr wo, ich habe die demos aber gesichert ich werde mal in der nächsten woche danach suchen(sobalt ich zuhause bin)

Es ist aber schon toll: das ein normales delphi progamm über 300 KB verbraucht und die WinApi gerade mal 7-8 KB verbraucht(bzw. die KOL kompos)

_________________
MFG
Michael Springwald, "kann kein englisch...."
matze
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: So 05.06.05 10:28 
die leute aus der demo szene nehmen dann noch am shcluss eine modifizierte UPX Version her um das ding zu packen !

_________________
In the beginning was the word.
And the word was content-type: text/plain.
Aya Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: So 05.06.05 10:31 
Hi,

user profile iconmatze hat folgendes geschrieben:
die leute aus der demo szene nehmen dann noch am shcluss eine modifizierte UPX Version her um das ding zu packen !


jap.. aber wie gesagt bekomme ich damit das ganze auch nur auf 5.5kb klein gepackt.. :(

Au'revoir,
Aya~

_________________
Aya
I aim for my endless dreams and I know they will come true!
tommie-lie
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: So 05.06.05 11:33 
Hast du Nicos system.pas und sysinit.pas schon drin (www.bendlins.de/nico/delphi/MiniDExe.zip)? Allerdings darfst du dann auf Compiler-Magic und damit auch auf Objektorientierung verzichten, aber immerhin kriegt er seine Echsen auf viereinhalb kB.

_________________
Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert
Aya Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: So 05.06.05 11:38 
Hi,

hab es auf andere art und weise hinbekommen.. :)

Wenn man Windows vorgaukelt es sein eine COM Datei und das dann mit UPX packt etc wird die exe im endeffekt knapp 2kb groß... :)
(Hab eine system.pas von "Vladimir Kladov" benutzt)

Danke trotzdem für eure hilfe :)

Au'revoir,
Aya~

_________________
Aya
I aim for my endless dreams and I know they will come true!
STATUS_ACCESS_DENIED
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 13.06.05 10:50 
Und das funktioniert auf Windows 9x? Sollte eigentlich nicht, da das File-Alignment dort einen Wert von 0x1000 haben muß.
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Mo 13.06.05 11:57 
user profile iconSTATUS_ACCESS_DENIED hat folgendes geschrieben:
Und das funktioniert auf Windows 9x? Sollte eigentlich nicht, da das File-Alignment dort einen Wert von 0x1000 haben muß.

bei com-dateien gibts kein alignment :mahn:

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
STATUS_ACCESS_DENIED
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 13.06.05 12:55 
user profile iconretnyg hat folgendes geschrieben:
user profile iconSTATUS_ACCESS_DENIED hat folgendes geschrieben:
Und das funktioniert auf Windows 9x? Sollte eigentlich nicht, da das File-Alignment dort einen Wert von 0x1000 haben muß.

bei com-dateien gibts kein alignment :mahn:
Natürlich gibt es ein Alignment, auch wenn es 16 Byte (1 Paragraph) ist, oder?

Mich würde vielmehr interessieren, wie man UPX eine COM-Datei "vorgaukelt" und dann die Sache packt! Schließlich überprüft UPX normalerweise die Strukturen einer PE-Datei und läßt packen nur innerhalb der Parameter zu. Für Windows 9x gibt es dann besagtes 4kB-Aligment. Ohne das wird die PE garnicht erst geladen, weil der Loader es verhindert. Fazit: mich interessiert, ob die PE danach noch sowohl auf Windows 9x als auch NT sauber läuft.
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Mo 13.06.05 13:02 
user profile iconSTATUS_ACCESS_DENIED hat folgendes geschrieben:
Natürlich gibt es ein Alignment, auch wenn es 16 Byte (1 Paragraph) ist, oder?
sonderbar, wenn ich mit TASM ein "hallo-welt" kompiliere, hat 22 bytes...

user profile iconSTATUS_ACCESS_DENIED hat folgendes geschrieben:
Mich würde vielmehr interessieren, wie man UPX eine COM-Datei "vorgaukelt" und dann die Sache packt! Schließlich überprüft UPX normalerweise die Strukturen einer PE-Datei und läßt packen nur innerhalb der Parameter zu. Für Windows 9x gibt es dann besagtes 4kB-Aligment. Ohne das wird die PE garnicht erst geladen, weil der Loader es verhindert. Fazit: mich interessiert,
ob die PE danach noch sowohl auf Windows 9x als auch NT sauber läuft.


www.virusexchange.or...phi/migeel/index.htm
Einloggen, um Attachments anzusehen!
_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
STATUS_ACCESS_DENIED
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 13.06.05 13:13 
user profile iconretnyg hat folgendes geschrieben:
user profile iconSTATUS_ACCESS_DENIED hat folgendes geschrieben:
Natürlich gibt es ein Alignment, auch wenn es 16 Byte (1 Paragraph) ist, oder?
sonderbar, wenn ich mit TASM ein "hallo-welt" kompiliere, hat 22 bytes...
Wirst du recht haben. Habe ich verwechselt mit Speicher-Alignment. Ist eben 1 Byte.

user profile iconretnyg hat folgendes geschrieben:
www.virusexchange.or...phi/migeel/index.htm
Danke. Ich schau's mir an.