| Autor |
Beitrag |
Aya
      
Beiträge: 1964
Erhaltene Danke: 15
MacOSX 10.6.7
Xcode / C++
|
Verfasst: 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:
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..255] of 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
      
Beiträge: 1383
Erhaltene Danke: 1
WinXP
D2005 PE
|
Verfasst: 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. 
|
|
3rdnuss
      
Beiträge: 139
|
Verfasst: 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
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: Sa 04.06.05 21:44
das prog klappt nur bei delphi programmen soweit ich weis.
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|
raziel
      
Beiträge: 2453
Arch Linux
JS (WebStorm), C#, C++/CLI, C++ (VS2013)
|
Verfasst: 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
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: So 05.06.05 06:52
Was soll denn der Zweck solcher Aktionen sein ?  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. 
_________________ Gruß
Hansa
|
|
mimi
      
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: 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
      
Beiträge: 4613
Erhaltene Danke: 24
XP home, prof
Delphi 2009 Prof,
|
Verfasst: 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 
      
Beiträge: 1964
Erhaltene Danke: 15
MacOSX 10.6.7
Xcode / C++
|
Verfasst: So 05.06.05 10:31
Hi,
matze 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
      
Beiträge: 4373
Ubuntu 7.10 "Gutsy Gibbon"
|
Verfasst: 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 
      
Beiträge: 1964
Erhaltene Danke: 15
MacOSX 10.6.7
Xcode / C++
|
Verfasst: 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
|
Verfasst: 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
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Mo 13.06.05 11:57
STATUS_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 
_________________ 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
|
Verfasst: Mo 13.06.05 12:55
retnyg hat folgendes geschrieben: | STATUS_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  |
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
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Mo 13.06.05 13:02
STATUS_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...
STATUS_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
|
Verfasst: Mo 13.06.05 13:13
retnyg hat folgendes geschrieben: | STATUS_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.
Danke. Ich schau's mir an.
|
|