Ja... Jeg har dog aldrig prøvet det selv. Med KOL (Key Objects Library) kan du få din exe fil ned på, jeg tror nok det er, 80 kb i stedet for dine 350kb - hvilket jo bestemt ikke er ret meget... Jeg har komponenten liggende, hvis du er interesseret!
Ja, grunden til at programmet fylder 350 KB, er, at det nemlig slet ikke er et simpelt lille program. Det er nemlig et Windows-program, og derfor bruger det et hav af API-funktioner etc. til at lave dit vindue.
Her er et eks. på et vindue (taget fra C++, da Windows bruger C++) : #include <windows.h>
/* Make the classname into a global variabel */ char szClassName[ ] = "MyLittleWindow"; int WINAPI WinMain(HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nFunsterStil) { HWND hwnd; /* This is the handle for our window */ MSG messages; /* Here messages to the application is saved */ WNDCLASSEX wincl; /* Datastructure for the windowclass */ /* The Window structure */ wincl.hInstance = hThisInstance; wincl.lpszClassName = szClassName; wincl.lpfnWndProc = WindowProcedure; /* This function is called by windows */ wincl.style = CS_DBLCLKS; /* Ctach double-clicks */ wincl.cbSize = sizeof(WNDCLASSEX); /* Use default icon and mousepointer */ wincl.hIcon = LoadIcon(NULL, IDI_APPLICATION); wincl.hIconSm = LoadIcon(NULL, IDI_APPLICATION); wincl.hCursor = LoadCursor(NULL, IDC_ARROW); wincl.lpszMenuName = NULL; /* No menu */ wincl.cbClsExtra = 0; /* No extra bytes after the window class */ wincl.cbWndExtra = 0; /* structure or the window instance */ /* Use lightgray as the background of the window */ wincl.hbrBackground = (HBRUSH) GetStockObject(LTGRAY_BRUSH); /* Register the window class, if fail quit the program */ if(!RegisterClassEx(&wincl)) return 0;
/* The class is registered, lets create a program*/
hwnd = CreateWindowEx( 0, /* Extended possibilites for variation */ szClassName, /* Classname ("MyLittleWindow") */ "A Simple Windows API program", /* Title Text */ WS_OVERLAPPEDWINDOW, /* defaultwindow */ CW_USEDEFAULT, /* Windows decides the position */ CW_USEDEFAULT, /* where the window end up on the screen */ 280, /* The programs width */ 180, /* and height in pixels */ HWND_DESKTOP, /* The window is a childwindow to desktop */ NULL, /* No menu */ hThisInstance, /* Program Instance handler */ NULL /* No Window Creation data */ );
/* Make the window visible on the screen */ ShowWindow(hwnd, nFunsterStil); /* Run the nessageloop. It will run until GetMessage( ) returns 0 */ while(GetMessage(&messages, NULL, 0, 0)) { /* Send message to WindowProcedure */ DispatchMessage(&messages); }
/* The program returvalue is 0 - The value that PostQuitMessage( ) gave */ return messages.wParam; } /* This function is called by the Windowsfunction DispatchMessage( ) */ LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { /* handle the messages */ case WM_DESTROY: PostQuitMessage(0); /* send a WM_QUIT to the messagequeue */ break; default: /* for messages that we don't deal with */ return DefWindowProc(hwnd, message, wParam, lParam); } return 0; } Og så skal vinduet jo tegnes op, og der skal lægges farve på, det tager altså også en del bytes. Så kan du vil selv regne ud, hvorfor et Delphi-program fylder så meget.
prøv at fjerne alle unødvendige include classer (under "uses" i Delphi).
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.