Насчет китайского



Posted by Anonymous on May 26, 2000 at 06:32:50:

In Reply to: Re: Есть ли "restore" у UPX? posted by Аpкадий Водяник on May 26, 2000 at 04:49:34:

: А вот насчет китайского - Вы или докажите - или оставьте пpи себе -

Один пример - открытие файла.
Вы используете (если Вам верить) некую ф-цию pas_open(), для которой переводилка создает длинный кусок кода с вызовом fopen() (из *.lib, который прилинковывается).
fopen() содержит длинный-длинный кусок кода с вызовом _lopen() из kernel32.dll и возбуждением _exception, если файл не удалось открыть, из-за этого приходится привлекать обработчик ошибок (представляю, какой жуткий кусок кода на паскале отвечает за это). А уж _lopen() в свою очередь вызывает CreateFile() в связке с GetLastError(), с которых, собственно, и надо было начинать. Кстати, проверять наличие файла попыткой его открыть - это уж никуда не годится (есть FindFirstFile(), кроме того, можно изрядно озадачить сервер, поместив в каталог с формами файлы "+.rpt" или что-то похожее, лишь бы в дереве было похожее по написанию выражение в качестве коэффициента). А сколько вопросов вызывает до сих пор малопредсказуемое поведение функций преобразования типов и форматированного вывода ([da...],[antida...],[sn...],[intsn...], [strip...] и т. д.)!!! Весь wwwboard забит сообщениями об этом. Вам, как паскальщикам, чужды возможности функций fscanf(...) и fprintf(...). А как обстоит дело с конструкциями вроде case ... of ...? Переводилка вставляет break в каждую ветвь или забывает? Похоже, что забывает(потенциальный источник проблем с логикой, т. к. в Си оператор switch перебирает все альтернативы, в отличие от паскалевского case, и если в n-й ветви условие для (n+1)-й стало истинным, то (n+1)-я ветвь тоже выполнится). А работа с датами? Надеюсь, это только клиент переводит системную дату, чтобы узнать день недели? Или сервер этим тоже грешит?
Скорее всего, не убедил...


Пpишедшие ответы: