Gideon Vi, незнаю, но было похоже, шо имело место некоторое расследование с вашей стороны и на волне воспоминаний про данный крэкме в соседнем топике, решил посмотреть, шо же там на краклабе по теме есть ли чо, а там оппа, чувак, который прямо вчера интересовалсо некоторой дэлфе здесь, ну мы и провели перекрестное разоблочение с полным умиления флашбэком. Как то так :-D
Ну тут всё просто, делфи хорош тем, что можно быстро создать оконное приложение, ну и ладно что килобайт 350-400. А вот когда консольное приложение делаешь, то тут, размер в 60-70 кб уже режет глаз(хотя моего кода там 2-3 кб), плюс плохо работают функции для работы с файлами, и ещё много чего не нравится, те же write, read. Например, я давно отказался от стандартных функций паскаля для работы с файлами, лет 12-14 уже как. Как помню, у меня в коде заглючило чтения запись в файл, вроде что то буфером, потом я реализовал код функциями из windows.pas и всё прекрасно заработало, и с тех пор я только windows.pas использую. А сейчас можно использовать функции из msvcrt.dll. Не трудно написать кроссплатформенную библиотеку. Ну а почему именно паскаль, а не Си/Си++, да потому что. Потому что, паскаль лучше освоен, хотя сейчас, с Си уже по лучше. И ещё, я использую единый стиль программирования на: С/С++, паскаль, ассемблер, Луа. Вот как-то так.
разница в том, что если ты быстро создашь оконное приложение на плюсах, то тебе придется брать тот же Qt, который на выходе будет весить еще больше... у современных дельфей нет только нормальной поддержки линуксов, но тут есть фрипаскаль и лазарус в качестве очень похожей альтернативы... фрипаскаль кстати неплохой компиль, даж кросскомпилить может (смотреть проект fpcupdeluxe)... забавно, что сама по себе луашная ВМ собирается в 100кб...
Rel, вес окошек не столь важен -- главное, шобы пахали без вопиющих глюков и в лине глюкалово гуи не самый редкий момент. что касается консолек и либ, то едва ль с сишечкой да плюсами тута шоль сравнится.
я бы никогда не назвал это нормальной поддержкой линукс... тем более этот шлак еще и продается, ппц...
в лине хватает всякой экзоты для разрабов, но её пользовать в чём-то мало-мальски серьёзном сродни варке каши из топора
в лине есть свой аналог дельфей - лазарус, свой аналог вб6 - гамбас... кому то канеш нравится это, но так сходу я не вспомню какой-то мало мальски известный софт, который на этом написан...
Я тоже не работал, но почему все большие проекты именно на плюсах? Вот навскидку , тот же хром, фаерфокс и проч. На дельфи я не помню ничего крупного (и популярного), вроде тотал командер, и то не уверен. Почему все незаслуженно забывают С++ билдер? Удобно рисовать контролы, и синтаксис Сишный. Но - совершенно не популярная вещь.
ну скажем фаерфокс постепенно переписывается на Расте... почему так много проектов на плюсах? так потому, что разрабам хочется пинать балду, пока проект собирается несколько часов... можно там кофе пойти попить например... дельфи и паскаль компилируются быстро, тут эта отмаза не сработает...
Изучил функцию __getmainargs, и сделал более оптимальный код. Код (Pascal): program easter_project; { Консольное приложения в стиле Си для Win32 } {$APPTYPE CONSOLE} uses msvcrt, easter in 'easter.pas'; //СТАРТОВЫЙ КОД var argc, ret:integer; argv, environ : arrayPChar; StartInfo:_startupinfo; begin StartInfo.newmode := 1; ret := __getmainargs(@argc, @argv, @environ, 0, @StartInfo); if ret=0 then ret := main(argc, argv, environ); _exit(ret); end. Это надо добавить в msvcrt.pas. Код (Pascal): type P_startupinfo = ^_startupinfo; _startupinfo = record newmode: integer; end; function __getmainargs(argc:PInteger; argv,environ:PChar; dowildcard:integer; si:P_startupinfo): integer; cdecl; {$EXTERNALSYM __getmainargs} procedure _exit(code: integer); cdecl; {$EXTERNALSYM _exit} Код (Pascal): function __getmainargs; external 'msvcrt.dll'; procedure _exit; external 'msvcrt.dll'; Важно завершить приложение стандартной функцией _exit, чтобы каллбек на завершение сработал. Так же сейчас избавился от библиотеки windows, значит портировать код будет легче. ЗЫ Воспользоваться вот этим http://any-book.org/download/14679.html, не удалось. Слишком кастрированный код.
Сейчас получше изучил для чего надо StartInfo.newmode Я так понял, это флаг для функции выделения памяти, если равно 1, то (// TRUE if new handler function), т.е. если новая функция обработчика (исключения памяти). Сам этот стартовый код нашёл в ассемблерных библиотеках, и там вообще не правильно __getmainargs запускалась. Тут я этот сделал более правильным. Ну в общем, лучше ноль установить, и самому решить проблему выделения памяти. ЗЫ И ещё, на делфях я уже не программирую, Делфи не установлен! Ну С/С++ освоил более или менее, плюс высокоуровней UASM с WinAPI могу лепить формы.