1. Если вы только начинаете программировать на ассемблере и не знаете с чего начать, тогда попробуйте среду разработки ASM Visual IDE
    (c) на правах рекламы
    Скрыть объявление

Delphi в стиле Си

Тема в разделе "DELPHI", создана пользователем Intro, 15 май 2019.

  1. Intro

    Intro Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    108
    Может кому то понадобиться. Программирования в делфи консольных приложений в стиле C.
    Стартовый код располагается в файле имя_проекта.dpr
    Код (Pascal):
    1. program nameproject;
    2. {
    3.    Консольное приложения в стиле Си для Win32
    4. }
    5. {$APPTYPE CONSOLE}
    6. uses
    7.   Windows,
    8.   name_project in 'name_project.pas';
    9.   procedure __getmainargs(_argc: PInteger; _argv, _environ:PChar; _param:integer; _si:PStartupInfo); cdecl; external 'msvcrt.dll';
    10. //СТАРТОВЫЙ КОД
    11. var   argc:integer;
    12.    argv, environ : arrayPChar;
    13.    _si:STARTUPINFO;
    14. begin
    15.    _si.cb := sizeof(STARTUPINFO);
    16.    GetStartupInfoA( _si );
    17.    __getmainargs( @argc, @argv, @environ, 0, @_si );
    18.    ExitProcess(main(argc, argv, environ));
    19. end.
    А теперь код проекта.
    Код (Pascal):
    1. unit name_project;
    2.  
    3. interface
    4.  
    5. uses
    6.    Windows{, SysUtils};
    7.  
    8. type   arrayPChar = array of PChar;
    9.      ParrayPChar = ^arrayPChar;
    10.  
    11.    function printf(Format: PChar): Integer; cdecl; varargs; external 'msvcrt.dll';
    12.    function sprintf(CharBuf: PChar; const Format: PAnsiChar): Integer; cdecl; varargs; external 'msvcrt.dll';
    13.    function main(argc : integer; argv, envp : arrayPChar): Integer; cdecl;
    14.  
    15. implementation
    16.  
    17. function main(argc : integer; argv, envp : arrayPChar): Integer;
    18. var   i : integer;
    19. begin
    20.    printf('ParamCount: %d'#10, argc);
    21.    for i:=0 to argc-1 do
    22.      printf('argv[%d]=[%s]'#10, i, argv[i]);
    23. end;
    24. end.
    Как то так, стартовый код в принципе надо переделать, но пока что есть.
    PS
    Код переделал, на более компактный и главное рабочий.
     
    Последнее редактирование: 16 май 2019
    CKAP нравится это.