mijn web games -> Impossible Snake 2 :: Impossible Snake :: Snake Slider
ik heb verder niet veel verstand van delphi, maar kun je niet gewoon een kaal project starten zonder dat je de hele VCL eromheen hebt zitten?
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
1
2
3
4
5
6
7
8
9
10
| program Project1;
uses
Windows ; // enz enz enz
{$R *.res}
begin
// hier al je code
end. |
Nu heb je een programma die niks toont. Ook geen console
...beter bekend als AMFan
Dit werkt ook heel goed om een stiekum progje te runnen bij iemand.Op donderdag 04 juli 2002 12:28 schreef Delpix het volgende:
...
Nu heb je een programma die niks toont. Ook geen console
(Porno op de achtergrond zetten bij een huisgenoot na 30 minuten
Siditamentis astuentis pactum.
aha ja dat werkt. Zoiets kan je ook met een "Console application" doen zag ik al (verschil is dat je dan geen icoontje aan de .EXE kan toekennen)Op donderdag 04 juli 2002 12:28 schreef Delpix het volgende:
Maak een standaard Application, Verwijder je Form uit het project (project>Remove from project) en pas je dpr bestand zo aan (project>view source):
maaruh ander vraagje dan, de .EXE is dan nog steeds rond de 300kb!?
mijn web games -> Impossible Snake 2 :: Impossible Snake :: Snake Slider
Volgens mij is dat gewoon minimum.. Anders moet je C++ nemen ofzoOp donderdag 04 juli 2002 13:11 schreef BdR het volgende:
[..]
aha ja dat werkt. Zoiets kan je ook met een "Console application" doen zag ik al (verschil is dat je dan geen icoontje aan de .EXE kan toekennen)
maaruh ander vraagje dan, de .EXE is dan nog steeds rond de 300kb!?het lijkt me dat dat veel kleiner kan als je alleen een ShowMessage doet en verder niets, maar hoe.. ik bedoel niet met upx ofzo
Siditamentis astuentis pactum.
Om dialogen te tonen kan je de MessageBox api functie nemen. Deze zat dacht ik in de unit Windows.
Edit:
Windows.Messagebox(Handle,PChar('Tekst'),PChar('Titelbalk'),MB_OK + MB_ICONINFORMATION);
...beter bekend als AMFan
hee ja.. maarja ShowMessage zit in DialogsOp donderdag 04 juli 2002 13:32 schreef Delpix het volgende:
Gebruik geen Dialogs en/of Forms unit. Deze maken je app al bijna 250kb grooter.
dus zo?Om dialogen te tonen kan je de MessageBox api functie nemen. Deze zat dacht ik in de unit Windows.
Edit:
Windows.Messagebox(Handle,PChar('Tekst'),PChar('Titelbalk'),MB_OK + MB_ICONINFORMATION);
1
| Windows.Messagebox(1, 'test123..'), 'Titel', MB_OK + MB_ICONINFORMATION); |
ik heb voor die handle maar 1 ingevuld..?
Maar ik heb het denk ik al, als ik bij het menu Project->Options->Packages de optie "Build with runtime packages" uitzet (niet aanvink) wordt de .EXE meteen stukken kleiner (van 300kb naar 9kb)
Packages zijn een soort DLL's die in de .EXE worden gezet, maar evt. ook apart kunnen worden gehouden. Dus even testen op een pc zonder Delphi om te zien welke packages wel en niet nodig zijn en dat is dan wat ik zoek, denk ik
mijn web games -> Impossible Snake 2 :: Impossible Snake :: Snake Slider
Volgens mij wou 0 wel helpen als handle.Op donderdag 04 juli 2002 14:05 schreef BdR het volgende:
..
code:
1 Windows.Messagebox(1, 'test123..'), 'Titel', MB_OK + MB_ICONINFORMATION);
ik heb voor die handle maar 1 ingevuld..?maar ik krijg geen messagebox.
En maak van je strings een PChar. Omdat je hier werkt met een API functie. ( Pchar('blaa') )
...beter bekend als AMFan
idd met 0 als handle werkt het goed, en trouwens met hWnd(nil) werkt ook..Op donderdag 04 juli 2002 14:13 schreef Delpix het volgende:
Volgens mij wou 0 wel helpen als handle.
En maak van je strings een PChar. Omdat je hier werkt met een API functie. ( Pchar('blaa') )
en een string 'blabla' ipv Pchar('blabla') werkt het al goed, dus.. maar okee typecast Pchar() is kleine moeite
mijn web games -> Impossible Snake 2 :: Impossible Snake :: Snake Slider
Geef je de handle van de applicatie door, dan kan je niet verder met het programma totdat het dialoog gesloten is.
En als je die 0 gebruikt zal je dialoog nergens aan gekoppeld worden. (tot zover ik weet)
...beter bekend als AMFan
Dat is niet waarOp donderdag 04 juli 2002 13:25 schreef Bosmonster het volgende:
Volgens mij is dat gewoon minimum.. Anders moet je C++ nemen ofzo
Je kunt in latere versies van delphi ook zonder een uses clause compileren. Het hangt er maar van af welke modules je nodig hebt. Ik gebruik er in mijn programma's (zonder console of forms) drie en de executable is ongeveer 40kb. Nog vrij groot, maar zeker geen 300 kb
Verwijderd
bij in de project unit:
application.createform(Tform1, form1);
application.showmainform := false;
Messagebox:
if Messagedlg('zet hier je text', mtinformation,[mbyes,mbno],0)= mryes then
begin
doeiets;
end;
Is 't wat?
En als de applicatie meteen weer moet sluiten nadat hij zijn actie's verricht heeft, is een venster ook niet nodig.
...beter bekend als AMFan
Als je 'm met runtime packages hebt gecompileerd kan je zien bij project->information welke packages die nodig heeft. Ik zou het echter niet doen, want de standaard package voor de vcl is groot. In Delphi 6 is dat 1,9 MB.Op donderdag 04 juli 2002 14:05 schreef BdR het volgende:
[..]
Maar ik heb het denk ik al, als ik bij het menu Project->Options->Packages de optie "Build with runtime packages" uitzet (niet aanvink) wordt de .EXE meteen stukken kleiner (van 300kb naar 9kb)
Packages zijn een soort DLL's die in de .EXE worden gezet, maar evt. ook apart kunnen worden gehouden. Dus even testen op een pc zonder Delphi om te zien welke packages wel en niet nodig zijn en dat is dan wat ik zoek, denk ik
Dat is alleen leuk als er veel software op draait die gemaakt is in Delphi, of je wilt kleinere updates kunnen uitbrengen.
Werkende MessageBox:
1
2
3
4
5
6
7
8
9
10
| program Project1;
uses
Windows;
{$R *.res}
begin
MessageBox(0, 'hiero een mededeling', 'titel van dialoog', MB_OK + MB_ICONINFORMATION)
end. |
P.S. Haal onnodige units weg uit uses-clauses. Ookal gebruik je de functionaliteit niet, toch maakt dit uit voor de grootte. Bovenstaand voorbeeld is 9,00 kB (9.216 bytes). Als je bijvoorbeeld ook SysUtils gebruikt wordt de exe al 38,5 kB (39.424 bytes).
Ik heb in bovenstaand voorbeeld wel {$R *.RES} laten staan. Zo heeft je exe wel een icoon, ten koste van 1024 bytes.
P.S. nr 2: De bestandgroten zijn die bij Delphi 6 SP 2.
1
2
3
4
5
6
7
8
9
10
| program Project1;
uses
Windows;
{$R *.res}
begin
MessageBox(0, 'hiero een mededeling', 'titel van dialoog',
MB_OK + MB_ICONINFORMATION)
end. |
en kies dan bij project->options->application tab een eigen icoontje (ipv dat standaard delphi icoontje) en maak de executable (build project). Die .exe zie ik in explorer dan met dat zelfgemaakte icoontje.
Als ik die executable opstart krijg ik de messagebox maar in de windows taakbalk zie ik dan alsnog het standaard delphi-icoontje..
Ik heb ook met resource hacker in de executable gekeken, maar dan vind ik alleen mijn eigen icoontje en niet dat standaard delphi icon. hoe kan dit?
mijn web games -> Impossible Snake 2 :: Impossible Snake :: Snake Slider
Verwijderd
Check even wat je voor .res bestandjes in je project dir hebt staan, en verwijder die eens..
Wat overigens je app. qua formaat ook wel wil verkleinen is door bij je project options, op het tabblad compiler bij 'debug' alles uit te vinken. Voor het voorbeeld hier maakt het geen moer uit overigens.
Met resource file en eeen ander icoon zie ook ik de Delphi icoon verschijnen
Messchien een idee om geen icoon te gebruiken (verwijder {$R *.res} uit je project).
Een andere oplossing zou ik op dit moment niet weten.
...beter bekend als AMFan
Op maandag 08 juli 2002 18:45 schreef hezik het volgende:
eerst die .res verwijderen, en dan via je project options een nieuw icoon toewijzen?
mijn web games -> Impossible Snake 2 :: Impossible Snake :: Snake Slider
Steam: Brainfrz82 | PSN: Brainfrz | Discord: Brainfrz
je kunt natuurlijk ook de andere posts doorlezen..Op maandag 08 juli 2002 22:38 schreef Magic het volgende:
je kunt natuurlijk ook form.visible op false zetten.
mijn web games -> Impossible Snake 2 :: Impossible Snake :: Snake Slider