каталог запуска

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Re: каталог запуска

Сообщение Сквозняк » 04.06.2023 18:13:11

Sharfik писал(а):Программа это четкая структура, она не делает что то просто так. Если возврат не соответствует ожиданию, значит условия не соответствуют заданным программистом. Либо программист не учет работу системы безопасности ОС, либо запуск программы был не так как предусматривал программист. И т.п. Функция тут не причем.


Вот не надо сказок. Сколько раз было такое, что читая собственный код офигевал: а это действительно я написал? А функция здесь причём. В третьей версии компилятора в него внесли порчу из дельфей, а патчи сопротивления этой порче завезли не во все функции. Потому нет ничего удивительного, что они не всегда правильно вызывают путь запуска бинарника, в который помещены например скопипащенные из браузера utf-8 смайлики. А после малюсенького патча функция стала возвращать такой путь без порчи. Порча пути, она не как мёд, а или есть или нет, потому неправильность функции в рамках fpc 3+ выявлена чётко. Можешь в багтрекер писать, чтобы поменяли тип результата функции с string; на UnicodeString;

Sharfik писал(а): Функция тут не причем. Если я лох и не читаю доку по политикам Windows, то это мои проблемы.


К виндовой функции притензий нет, они есть к паскалевской в компиляторах выше третьей версии.

Sharfik писал(а):У меня так же не работало ПО, потому что его запускали не через ярлык, а через связанный файл. Но я не кричу что функция косячная. Нашел, дополнил условия такого запуска.


Программа должна работать не только у меня и там могут быть неанглийские символы в путях. И эта обвязка виндовой функции в каталогах с такими путями может обрезать часть пути, а это лютый звиздец и шишки на автора программы за то, что не смог и не обеспечил. Потому эту функцию для новых компиляторов нужно править.
Сквозняк
энтузиаст
 
Сообщения: 1123
Зарегистрирован: 29.06.2006 22:08:32

Re: каталог запуска

Сообщение Снег Север » 05.06.2023 09:14:36

Сквозняк писал(а): Сколько раз было такое, что читая собственный код офигевал: а это действительно я написал?

Рекомендую писать код по правилам и в трезвом виде, тогда подобное окажется невозможным.
Похоже, никто из здешних гуру даже не слыхал про ParamStrUTF8, которая работает правильно всегда.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 3039
Зарегистрирован: 27.11.2007 16:14:47

Re: каталог запуска

Сообщение Сквозняк » 05.06.2023 18:13:14

Снег Север писал(а):Рекомендую писать код по правилам и в трезвом виде, тогда подобное окажется невозможным.


Это заявление относится только к низкоразумным, или отказавшимся от большей части разума, разумным. Сложная программа в некоторых местах может потребовать от разработчика больше вычислительных возможностей, чем у него на тот момент есть, а программу всё равно надо дописать - хоть в трансе, хоть как медиуму клацать по клавам то, что подскажут духи прошлых программистов - хоть как, но программа должна быть дописана и работать. Это пейсатели хелловордов и отрицающие разум могут щёки надувать и отрицать реальные факты, а в большом мире всё иначе.

Снег Север писал(а):Похоже, никто из здешних гуру даже не слыхал про ParamStrUTF8, которая работает правильно всегда.


Она лазарусная, а программы не всегда имеют от него зависимости, это раз. А во вторых, какая разница, в UTF8 или другой UTF будет исходный параметр, если, при попытке его достать, ParamStr(0) и GetModuleName(0) на выходе перекодируют его в CP866 или CP1251 с обрезкой "лишней" информации. Твой метод прокатит только если лишнее перекодирование будет в UTF8.
Сквозняк
энтузиаст
 
Сообщения: 1123
Зарегистрирован: 29.06.2006 22:08:32

Re: каталог запуска

Сообщение Снег Север » 05.06.2023 20:45:37

Бред. Ничего они не перекодируют, вы что на вин-95 работаете? В винде консоль утф-8 уже лет 20.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 3039
Зарегистрирован: 27.11.2007 16:14:47

Re: каталог запуска

Сообщение Сквозняк » 05.06.2023 22:34:36

Это вы тут тупизм и отказ от разума пропагандируете. В русифицированной маздайке до сих пор в консоли IBM866 рулит и педалит. В семёрке так точно, в десятке не проверял, но глюки в ней были точь в точь такие же. Как каталоги с неанглийскими именами, так баги - даже послать команду чтобы прыгнуть в такой каталог невозможно, чтобы она нормально сработала, потому что команда перекодируется и данные в ней меняются. В линуксе такой гадости не замечал.
Сквозняк
энтузиаст
 
Сообщения: 1123
Зарегистрирован: 29.06.2006 22:08:32

Re: каталог запуска

Сообщение Снег Север » 06.06.2023 08:27:49

Сквозняк писал(а):В русифицированной маздайке до сих пор в консоли IBM866 рулит и педалит

Брехня.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 3039
Зарегистрирован: 27.11.2007 16:14:47

Re: каталог запуска

Сообщение Сквозняк » 06.06.2023 17:40:28

Снег Север писал(а):Брехня.


Вот ты и брешешь. А в маздайке лютый звиздец с кодировками. Вот прямо сейчас пытаюсь найти где портится строка для одной из внешних команд. И вроде бы у строк 65001 кодировка, а вызываемый файл не находится. Другие находятся, а этот нет - г-но разработчики накопировали из дельфей чтобы людям жизнь испортить. Все баги перенесли для аутентичности и не сделали ключей, чтобы можно было в режиме реального времени их отключать. Ну как же, они старались, кормили своих пользователей г-ном, пусть теперь жрут безальтернативно.

Добавлено спустя 1 час 7 минут 49 секунд:
В какой кодировке надпись? В utf-8?
Код: Выделить всё
BEGIN
WRITELN(#138#174#173#227#225#32#176#177#178);
END.

Собираю в линуксе, перезагружаюсь в семёрку, запускаю консоль cmd, а в ней тестовую программу. И получаю результат написанный не кракозябрами.
Код: Выделить всё
F:testFGFGFG рапаппр 23?? ?? ???? ?? ??44binwin64>test_866.exe
Конус ░▒▓

Изображение
И как это понимать, господин Соврамши?

Добавлено спустя 4 часа 22 минуты 28 секунд:
Обнаружил, что местами, через строки unicodestring, в виндовую программу прорывается кодировка 1200, хотя я её там не заказывал, а прописывал 65001. Звиздец бардак и глюкодром. Слава нашим говноделам!
Сквозняк
энтузиаст
 
Сообщения: 1123
Зарегистрирован: 29.06.2006 22:08:32

Re: каталог запуска

Сообщение zub » 07.06.2023 02:01:12

>>В какой кодировке надпись? В utf-8?
Код: Выделить всё
BEGIN
WRITELN(#138#174#173#227#225#32#176#177#178);
END.


Предлагаю для начала посмотреть чем в данном случае является #138#174#173#227#225#32#176#177#178 ? это может быть 1-пчар, 2-шортстринг, 3-стринг. Думаю это окажется 1 или 2.
1 и 2 имеют метки кодировки?
zub
долгожитель
 
Сообщения: 2886
Зарегистрирован: 14.11.2005 23:51:26

Re: каталог запуска

Сообщение Снег Север » 07.06.2023 08:25:37

Набор символьных констанд автоматически конвертируется FPC в шортстринг. С незапамятных времен. Я на это напарывался еще в древние времена. Для корректной работы надо обязательно ставить кодировку исходника утф8 и присваивать константы строковой переменной в теле программы. тогда всё отработает корректно. Топикстартер постоянно "стреляет себе в ногу", но винит, почемуто, винду а не свои кривые руки.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 3039
Зарегистрирован: 27.11.2007 16:14:47

Re: каталог запуска

Сообщение Сквозняк » 07.06.2023 09:09:15

Снег Север постоянно советует гадости и защищает любые пакости от начальства, в данном случае от разработчиков. Эта программа корректно и отработала - специально сделан скриншот чтобы можно было в этом убедиться. А то, что он предлагает, это вообще не программировать ничего кроме тыкания в формочках чтобы не напарываться на баги, которые бросят тень на "великие постулаты мудрецов".
Если сделать строго по совету гуру, то длина строки так и будет 9, только содержание перекодируется в хлам. Или вообще не скомпилируется.
Сквозняк
энтузиаст
 
Сообщения: 1123
Зарегистрирован: 29.06.2006 22:08:32

Re: каталог запуска

Сообщение Снег Север » 07.06.2023 12:50:44

Если программа корректно работала в вынь-98, это не значит, что она должна так же работать в семерке и выше. Ни одна программа под линухи двадцатилетней давности в нынешних даже не запустится.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 3039
Зарегистрирован: 27.11.2007 16:14:47

Re: каталог запуска

Сообщение xchgeaxeax » 07.06.2023 14:53:50

Снег Север писал(а):Ни одна программа под линухи двадцатилетней давности в нынешних даже не запустится.

У меня до сих пор лежит диск с мини игрушками под LInux как раз двадцатилетней давности (раньше не у всех был распространён быстрый интернет и репозитории выходили на дисках). Где-то процентов 20 с этого диска игр ещё запускаются, хотя они были для AltLinux 5, а у меня сейчас Calculate 5.15. 32-битные программы все ещё запускаются.

Хотя согласен. Большинство проблем, из-за которых не работают программы, это отсутствие библиотек (их банально прекратили выпускать и они пропали или просто переименовали) или полной совместимости библиотек со старыми версиями.

А вот мастдай перековеркали с тех пор до неузнаваемости. Особенно переход 7-8 и 8-10. Очень мало программ сохраняют обратную совместимость.
xchgeaxeax
постоялец
 
Сообщения: 125
Зарегистрирован: 11.05.2023 03:51:40

Re: каталог запуска

Сообщение Снег Север » 07.06.2023 17:42:41

xchgeaxeax писал(а): Особенно переход 7-8 и 8-10. Очень мало программ сохраняют обратную совместимость.

Обратную - может быть не сохраняют, она очень мало кому нужна. А прямая - великолепна, я еще не всречал ни одной программы, которя шла на семерке и не пошла бы на 8-10. На десятке, вообще - просто идеально идут прграммы и игры с семерки. Даже установки настроек совместимости в ярлыке не требуют.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 3039
Зарегистрирован: 27.11.2007 16:14:47

Re: каталог запуска

Сообщение Сквозняк » 07.06.2023 21:22:52

Если программа корректно работала в вынь-98, это не значит, что она должна так же работать в семерке и выше. Ни одна программа под линухи двадцатилетней давности в нынешних даже не запустится.

Программа корректно работала ещё под хрюшу SP3, под неё впервые на вынь и портировалась а не на вынь-98. А на семёрке начались глюки с кодировками, которые решились переходом на новый компилятор, который принёс уже другие глюки. Но вопрос не в этом, при переходе на новый компилятор можно что-то небольшое пропатчить, но когда у программиста отбирают вообще все типы строк и говорят "пользуйся только массивами байтов", умалчивая про то, что это не удастся из-за совместимости, это такое вредительство, за которое инноватор Тухаческий однажды отправился в командировку. Ибо нефиг было своими "инновациями" мешать людям нормальные ништяки делать.

Пока тут вместо помощи от кое кого шла пропаганда изо всех щелей, для всех выявленных багов 3+ компилятора уже нашёл противоядия. Последним был долбоклюйский тип данных в .picture.LoadFromFile( который хреново перекодирует пути со смайликами, но если прыгнуть в каталог с картинками и пользоваться короткими путями, то можно работать и с этим баганутым полем класса. Имена файлов ведь даю нормальные, без расширенных символов.

А старые программы для линуксов, если они не на одноразовом C/C++ коде, то можно пропатчить и пересобрать под другие зависимости. И даже одноразовый плюсовый код иногда переносят в новые линуксы просто потому, что у писателей на модном промышленном языке обычно голова уже нормально не работает и в новой программе нет нескольких копеечных фич из старой и никто их туда не добавит потому что потому. Такая ситуация с просмотрщиками картинок - разработчики не могут (по уму не могут, потому что плюсы мозги съели а не технически это сложно) добавить фичи масштабирования и управления колёсиком мыши, которые есть в древнем kuickshow, которому больше 20 лет и есть. И потому проще пересобрать двадцатилетнюю программу, чем докричаться до авторов новых делающих тоже самое, но коряво. Договориться о некоторых мелочах нельзя. Всё как говорил классик - есть 2 беды: дураки и дороги. С дураками об умном по хорошему не договоришься, им нужно весь мир дурацким сделать, чтобы там жить комфортно.

Добавлено спустя 5 минут 47 секунд:
xchgeaxeax писал(а):Большинство проблем, из-за которых не работают программы, это отсутствие библиотек (их банально прекратили выпускать и они пропали или просто переименовали) или полной совместимости библиотек со старыми версиями.


Если новые библиотеки совместимы со старыми, то это лечится симлинками. Но у сиплюсовых программ чрезмерно много зависимостей, потому на баги можно нарваться просто на ровном месте.
Сквозняк
энтузиаст
 
Сообщения: 1123
Зарегистрирован: 29.06.2006 22:08:32

Re: каталог запуска

Сообщение xchgeaxeax » 08.06.2023 04:22:45

Снег Север писал(а):я еще не всречал ни одной программы, которя шла на семерке и не пошла бы на 8-10

Как на счет WinHex. 18 версия нормально работает на 7 и отказывается работать на 10, а на 8 не работает редактирование дисков и памяти.
При этом с 20 версией все наоборот...

Сквозняк писал(а):Но у сиплюсовых программ чрезмерно много зависимостей, потому на баги можно нарваться просто на ровном месте.

Научите делать симлинки на 64 битные библиотеки для запуска 32-битных программ.
xchgeaxeax
постоялец
 
Сообщения: 125
Зарегистрирован: 11.05.2023 03:51:40

Пред.След.

Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

Рейтинг@Mail.ru