1. Уважаемые гости и пользователи форума.
    Администрация настоятельно рекомендует не регистрировать несколько аккаунтов для одного пользователя. При выявлении наличия мультиаккаунтов будут заблокированы все учетные записи данного пользователя.
    Аккаунты, зарегистрированные на временную почту будут также заблокированы.

Вопрос Среда разработки Delphi

Тема в разделе "Delphi", создана пользователем aLLeXUs, 14 авг 2014.

  1. Пользователь

    Регистрация:
    4 мар 2012
    Сообщения:
    143
    Симпатии:
    74
    На сколько я знаю, то на данном форуме должно быть много Delphi программистов. И вот у меня есть такой вопрос. Какую среду разработки вы используете? Сам я использую Embercadero RAD Studio XE5. У меня такой вопрос возник потому что получаемые файлы после компиляции получаются большого размера. Вот допустим если я скомпилирую пустой проект в режиме Release, то есть без отладочной информации то exe получается примерно 2 мб, что достаточно много. Подскажите что вы делаете что бы добиться маленького размера исполняемого файла или библиотеки. Ведь я не видел ни программ ни библиотек которые много бы весили при столь незначительном функционале.
     
  2. Старожил R.G. Revenants

    Регистрация:
    19 дек 2011
    Сообщения:
    350
    Симпатии:
    403
    Embercadero RAD Studio XE3.
    VCL. Можно ненамного уменьшить размер исполняемого файла, в интернете есть несколько статей.
    Из того, что я знаю - KOL, либо писать на чистом WinAPI.
     
  3. Пользователь

    Регистрация:
    19 июн 2011
    Сообщения:
    79
    Симпатии:
    57
    Embercadero RAD Studio XE4 / Delphi 7.
    Это беда новых Delphi XE. Хочешь писать быстро с хорошим функционалом - приходится чем-то жертвовать. Попробуй Delphi 7, если не нужны фичи новых Delphi XE. Либо писать на WinApi, но тогда смысла оставаться на Delphi не вижу, переходи на C/C++.
     
  4. Пользователь

    Регистрация:
    4 мар 2012
    Сообщения:
    143
    Симпатии:
    74
    А что это даст? Я создал пустой проект и в uses удалил все кроме Vcl.Forms, но после компиляции файл все равно занимает 2 мб. Не думаю что компонент форм сколько весил бы
    а можно узнать, сколько весит exe пустого проекта в режиме release? Думаю может перейти на эту версию
    это совсем другой язык, не схожий с delphi, для меня сложный.
    не нашел, не понял как сформулировать. Можно пример статьи?
     
  5. Пользователь

    Регистрация:
    19 июн 2011
    Сообщения:
    79
    Симпатии:
    57
    Никаких модулей не будет. Будет лишь динамическая линковка майковских dll.
    Например:
    Код (Text):
    1. function CreateWindowExW(dwExStyle: DWORD; lpClassName: PChar;
    2.   lpWindowName: PChar; dwStyle: DWORD; X, Y, nWidth, nHeight: Integer;
    3.   hWndParent: HWND; hMenu: HMENU; hInstance: HINST; lpParam: Pointer): HWND;
    4.   stdcall; external 'user32.dll' name 'CreateWindowExW';
    Затем используешь функцию для своих нужд.
     
  6. Старожил R.G. Revenants

    Регистрация:
    19 дек 2011
    Сообщения:
    350
    Симпатии:
    403
    2,17 МБ (2 283 008 байт)
    https://www.google.ru/?gws_rd=ssl#newwindow=1&q=delphi xe3 exe size
    ----
    Замена дефолтной иконки Delphi XE3 на свою, весом в 386 байт даёт: 1,89 МБ (1 985 536 байт).
    ----

    Если отключить RTTI
    Код (Text):
    1. {$WEAKLINKRTTI ON}
    2. {$RTTI EXPLICIT METHODS([]) FIELDS([]) PROPERTIES([])}
    размер exe уменьшится до 1,53 МБ (1 612 288 байт)
    ----
    В конце можно пройтись UPX'ом, что даст 431 КБ (441 856 байт)
    Скомпильте этот код:
    Код (Text):
    1. uses
    2.   Windows,
    3.   Messages;
    4.  
    5. var
    6.   Msg        : TMSG;
    7.   LWndClass  : TWndClass;
    8.   hMainHandle: HWND;
    9.   hButton    : HWND;
    10.   hStatic    : HWND;
    11.   hEdit      : HWND;
    12.   hFontText  : HWND;
    13.   hFontButton: HWND;
    14.  
    15. procedure ReleaseResources;
    16. begin
    17.   DestroyWindow(hButton);
    18.   DestroyWindow(hStatic);
    19.   DestroyWindow(hEdit);
    20.   DeleteObject(hFontText);
    21.   DeleteObject(hFontButton);
    22.   PostQuitMessage(0);
    23. end;
    24.  
    25. function WindowProc(hWnd,Msg:Longint; wParam : WPARAM; lParam: LPARAM):Longint; stdcall;
    26. begin
    27.   case Msg of
    28.       WM_COMMAND: if lParam = hButton then
    29.                     MessageBox(hMainHandle,'You pressed the button Hello', 'Hello',MB_OK or MB_ICONINFORMATION);
    30.       WM_DESTROY: ReleaseResources;
    31.   end;
    32.   Result:=DefWindowProc(hWnd,Msg,wParam,lParam);
    33. end;
    34.  
    35. begin
    36.   //create the window
    37.   LWndClass.hInstance := hInstance;
    38.   with LWndClass do
    39.     begin
    40.       lpszClassName := 'MyWinApiWnd';
    41.       Style         := CS_PARENTDC or CS_BYTEALIGNCLIENT;
    42.       hIcon         := LoadIcon(hInstance,'MAINICON');
    43.       lpfnWndProc   := @WindowProc;
    44.       hbrBackground := COLOR_BTNFACE+1;
    45.       hCursor       := LoadCursor(0,IDC_ARROW);
    46.     end;
    47.  
    48.   RegisterClass(LWndClass);
    49.   hMainHandle := CreateWindow(LWndClass.lpszClassName,'Window Title', WS_CAPTION or WS_MINIMIZEBOX or WS_SYSMENU or WS_VISIBLE, (GetSystemMetrics(SM_CXSCREEN) div 2)-190,
    50.       (GetSystemMetrics(SM_CYSCREEN) div 2)-170, 386,200,0,0,hInstance,nil);
    51.  
    52.   //Create the fonts to use
    53.   hFontText := CreateFont(-14,0,0,0,0,0,0,0,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,VARIABLE_PITCH or FF_SWISS,'Tahoma');
    54.   hFontButton := CreateFont(-14,0,0,0,0,0,0,0,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,VARIABLE_PITCH or FF_SWISS,'Tahoma');
    55.  
    56.   //create the static
    57.   hStatic:=CreateWindow('Static','This is static text, like a TLabel',WS_VISIBLE or WS_CHILD or SS_LEFT, 10,10,360,44,hMainHandle,0,hInstance,nil);
    58.   SendMessage(hStatic,WM_SETFONT,hFontText,0);
    59.  
    60.   //create the edit
    61.   hEdit:=CreateWindowEx(WS_EX_CLIENTEDGE,'Edit','This a Edit like and TEdit', WS_VISIBLE or WS_CHILD or ES_LEFT or ES_AUTOHSCROLL,10,35,360,23,hMainHandle,0,hInstance,nil);
    62.   SendMessage(hEdit,WM_SETFONT,hFontText,0);
    63.  
    64.   //create the button
    65.   hButton:=CreateWindow('Button','Hello', WS_VISIBLE or WS_CHILD or BS_PUSHBUTTON or BS_TEXT, 10,130,100,28,hMainHandle,0,hInstance,nil);
    66.   SendMessage(hButton,WM_SETFONT,hFontButton,0);
    67.  
    68.   //message loop
    69.   while GetMessage(Msg,0,0,0) do
    70.   begin
    71.     TranslateMessage(Msg);
    72.     DispatchMessage(Msg);
    73.   end;
    74.  
    75. end.
     
    aLLeXUs и sergey3695 нравится это.
  7. Пользователь

    Регистрация:
    4 мар 2012
    Сообщения:
    143
    Симпатии:
    74
    Mailchik, большое спасибо за наглядный пример. Я создал консольное приложение и заменил код на Ваш, в итоге получил exe размером 30 кб (после пакера 14 кб), чего я даже не ожидал... Только вот консольное окно тоже появилось.
    Наверное попробую еще более ранние версии IDE (например RAD Studio 2010) и Delphi 7. Тогда наверное и определюсь окончательно что мне нужно.

    Всем спасибо за внимание.
     
  8. Пользователь

    Регистрация:
    26 июн 2011
    Сообщения:
    66
    Симпатии:
    22
    Delphi XE по умолчанию пакует все VCL в программу. В Project-Options-Packages убери все что не используешь, если будешь юзать программу только на своем компьютере включи опцию Build With Runtime Packages. В Delphi 7 такого нет, размер ехе намного меньше.
     
  9. Пользователь

    Регистрация:
    4 мар 2012
    Сообщения:
    143
    Симпатии:
    74
    убрал все кроме двух пунктов, размер вообще не изменился
     
  10. Пользователь

    Регистрация:
    22 апр 2014
    Сообщения:
    4
    Симпатии:
    1
    aLLeXUs, делал как то простой проигрыватель под андроид да ХЕ6, при том что внешние изображения не использовал вообще так размер скомпилированного апк файла был аж 15мб. следует отписать в русскоязычную поддержку программы (адекватная поддержка, да и отвечают быстро) ну или идти на киберфорум где уж точно есть профессиональные программисты нежели здесь
     
  11. Знаток R.G. Revenants

    Регистрация:
    16 июн 2011
    Сообщения:
    358
    Симпатии:
    740
    Профессиональные программисты не парятся размером проги, и вообще по большей части они не представляют во что компилится их код. В данном аспекте как раз таки шарят дзены-любители, ибо только им это интересно.
     
    Nemko нравится это.

Поделиться этой страницей