Delphi в стиле Си

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

  1. Gideon Vi

    Gideon Vi New Member

    Публикаций:
    0
    Регистрация:
    22 июл 2005
    Сообщения:
    11
    всем спасибо

    TrashGen, чувак, 2к11... ты кто и зачем я тебя упомянул в том топе?
     
  2. TrashGen

    TrashGen ТрещГен

    Публикаций:
    0
    Регистрация:
    15 мар 2011
    Сообщения:
    1.186
    Адрес:
    подполье
    Gideon Vi, незнаю, но было похоже, шо имело место некоторое расследование с вашей стороны и на волне воспоминаний про данный крэкме в соседнем топике, решил посмотреть, шо же там на краклабе по теме есть ли чо, а там оппа, чувак, который прямо вчера интересовалсо некоторой дэлфе здесь, ну мы и провели перекрестное разоблочение с полным умиления флашбэком. Как то так :-D
     
  3. Gideon Vi

    Gideon Vi New Member

    Публикаций:
    0
    Регистрация:
    22 июл 2005
    Сообщения:
    11
    лол. Извини, если обидел чем, я про тот топик ничего не помню. Пис, всем сори за офик.
     
  4. TrashGen

    TrashGen ТрещГен

    Публикаций:
    0
    Регистрация:
    15 мар 2011
    Сообщения:
    1.186
    Адрес:
    подполье
    Gideon Vi, никаких обид, бро, проста чота навалило разом)
     
  5. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    вот это бредятина вполне нормальна для васма, я уже привыкаю к этому...
     
  6. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.243
    а подробней? :)
     
  7. Intro

    Intro Active Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    600
    Ну тут всё просто, делфи хорош тем, что можно быстро создать оконное приложение, ну и ладно что килобайт 350-400.
    А вот когда консольное приложение делаешь, то тут, размер в 60-70 кб уже режет глаз(хотя моего кода там 2-3 кб), плюс плохо работают функции для работы с файлами, и ещё много чего не нравится, те же write, read. Например, я давно отказался от стандартных функций паскаля для работы с файлами, лет 12-14 уже как. Как помню, у меня в коде заглючило чтения запись в файл, вроде что то буфером, потом я реализовал код функциями из windows.pas и всё прекрасно заработало, и с тех пор я только windows.pas использую. А сейчас можно использовать функции из msvcrt.dll. Не трудно написать кроссплатформенную библиотеку.
    Ну а почему именно паскаль, а не Си/Си++, да потому что. Потому что, паскаль лучше освоен, хотя сейчас, с Си уже по лучше.
    И ещё, я использую единый стиль программирования на: С/С++, паскаль, ассемблер, Луа. Вот как-то так.
     
    UbIvItS нравится это.
  8. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    разница в том, что если ты быстро создашь оконное приложение на плюсах, то тебе придется брать тот же Qt, который на выходе будет весить еще больше... у современных дельфей нет только нормальной поддержки линуксов, но тут есть фрипаскаль и лазарус в качестве очень похожей альтернативы... фрипаскаль кстати неплохой компиль, даж кросскомпилить может (смотреть проект fpcupdeluxe)...

    забавно, что сама по себе луашная ВМ собирается в 100кб...
     
    UbIvItS нравится это.
  9. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.243
    Rel, вес окошек не столь важен -- главное, шобы пахали без вопиющих глюков и в лине глюкалово гуи не самый редкий момент. что касается консолек и либ, то едва ль с сишечкой да плюсами тута шоль сравнится. :)
     
  10. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.455
    Адрес:
    Россия, Нижний Новгород
    А что скажешь FMXLinux?
     
  11. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    я бы никогда не назвал это нормальной поддержкой линукс... тем более этот шлак еще и продается, ппц...
     
    UbIvItS нравится это.
  12. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.243
    в лине хватает всякой экзоты для разрабов, но её пользовать в чём-то мало-мальски серьёзном сродни варке каши из топора :)
     
  13. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    в лине есть свой аналог дельфей - лазарус, свой аналог вб6 - гамбас... кому то канеш нравится это, но так сходу я не вспомню какой-то мало мальски известный софт, который на этом написан...
     
  14. M0rg0t

    M0rg0t Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    1.576
    Я тоже не работал, но почему все большие проекты именно на плюсах? Вот навскидку , тот же хром, фаерфокс и проч. На дельфи я не помню ничего крупного (и популярного), вроде тотал командер, и то не уверен.
    Почему все незаслуженно забывают С++ билдер? Удобно рисовать контролы, и синтаксис Сишный. Но - совершенно не популярная вещь.
     
  15. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    ну скажем фаерфокс постепенно переписывается на Расте... почему так много проектов на плюсах? так потому, что разрабам хочется пинать балду, пока проект собирается несколько часов... можно там кофе пойти попить например... дельфи и паскаль компилируются быстро, тут эта отмаза не сработает...
     
  16. Intro

    Intro Active Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    600
    Изучил функцию __getmainargs, и сделал более оптимальный код.
    Код (Pascal):
    1. program easter_project;
    2. {   Консольное приложения в стиле Си для Win32   }
    3. {$APPTYPE CONSOLE}
    4. uses msvcrt, easter in 'easter.pas';
    5. //СТАРТОВЫЙ КОД
    6. var   argc, ret:integer;
    7.    argv, environ : arrayPChar;
    8.    StartInfo:_startupinfo;
    9. begin
    10.    StartInfo.newmode := 1;
    11.    ret := __getmainargs(@argc, @argv, @environ, 0, @StartInfo);
    12.    if ret=0 then
    13.      ret := main(argc, argv, environ);
    14.    _exit(ret);
    15. end.
    Это надо добавить в msvcrt.pas.
    Код (Pascal):
    1. type  P_startupinfo   = ^_startupinfo;
    2. _startupinfo = record
    3.    newmode: integer;
    4. end;
    5. function __getmainargs(argc:PInteger; argv,environ:PChar; dowildcard:integer; si:P_startupinfo): integer; cdecl;
    6. {$EXTERNALSYM __getmainargs}
    7. procedure _exit(code: integer); cdecl;
    8. {$EXTERNALSYM _exit}
    Код (Pascal):
    1. function __getmainargs; external 'msvcrt.dll';
    2. procedure _exit; external 'msvcrt.dll';
    Важно завершить приложение стандартной функцией _exit, чтобы каллбек на завершение сработал. Так же сейчас избавился от библиотеки windows, значит портировать код будет легче.
    ЗЫ
    Воспользоваться вот этим http://any-book.org/download/14679.html, не удалось. Слишком кастрированный код.
     
  17. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    интересно, где эта функция выделяет память для argv и environ, наверняка на куче...
     
  18. Intro

    Intro Active Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    600
    Смотри код в crtlib.c в студии.
     
  19. Intro

    Intro Active Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    600
    У кого нибудь есть исходники файлов system.pas и sysinit.pas для Delphi6 или хотя бы Delphi7?
     
  20. Intro

    Intro Active Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    600
    Сейчас получше изучил для чего надо StartInfo.newmode
    Я так понял, это флаг для функции выделения памяти, если равно 1, то (// TRUE if new handler function), т.е. если новая функция обработчика (исключения памяти).
    Сам этот стартовый код нашёл в ассемблерных библиотеках, и там вообще не правильно __getmainargs запускалась. Тут я этот сделал более правильным.
    Ну в общем, лучше ноль установить, и самому решить проблему выделения памяти.
    ЗЫ
    И ещё, на делфях я уже не программирую, Делфи не установлен! Ну С/С++ освоил более или менее, плюс высокоуровней UASM с WinAPI могу лепить формы.