Delphi project - отладка x релизной версии - проблема с библиотекой Indy - PullRequest
1 голос
/ 03 ноября 2010

У нас есть порт приложения из Delphi 7 в Delphi 2007 - и связь между сервером и клиентом из Indy 9 в Indy 10.

Часть, которая проверяет имя пользователя и пароль, теперь дает действительно странные результаты.: Если я нахожусь на моей виртуальной машине (среде разработки) с Delphi 2007, я могу без проблем войти в серверное приложение.

Если я генерирую исполняемые файлы и пытаюсь запустить их вне виртуальной машины, я получаюневерный пароль.Код, проверяющий пароль, считывает данные, используя TIdTCPConnection.ReadString - для Delphi 7 и TidTCPConnection.Socket.ReadString в Delphi 2007.

Я догадывался, что это как-то связано с дополнительными параметрами наВерсия Delphi 2007 для метода ReadString, но затем, почему я могу войти в систему, когда я запускаю приложение в режиме отладки - либо запуск сервера в режиме отладки, либо клиента в режиме отладки, но не в состоянии подключиться за пределами среды Delphi 2007.

Есть ли какая-либо DLL или другой файл, который мне здесь не хватает?

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

Отредактировано - отредактировано - отредактировано - отредактировано - отредактировано:

Я изменил название этого вопроса и выделил проблему, возникающую только в выпускной версии приложения.С отладочной версией, включая TD32, отладочную информацию, локальные символы, отладочный DCU и т. Д., Проблема просто не возникает.

На машине, на которой я тестирую релизную и отладочную версию, установлена ​​только Delphi 7.Тот, который генерирует исполняемые файлы, с Finalbuilder, имеет Delphi 7 и Delphi 2007 (используется версия компилятора).

У меня есть другая виртуальная машина, которую я использую для разработки проектов Delphi 2007 - все, что сгенерировано на этой машине -Отладочная версия, также работает нормально - но выпускная версия - без отладочной информации, будет иметь ту же проблему с паролем.

Ответы [ 2 ]

0 голосов
/ 04 ноября 2010

Это действительно трудно диагностировать, не видя ваш реальный код и данные. Скорее всего, когда вы переключились с Indy 9 на 10, ваш код Indy 10 фактически не использует правильную функциональность, которая эквивалентна вашему коду Indy 9. Пожалуйста, предоставьте более подробную информацию.

0 голосов
/ 04 ноября 2010

Вы можете попробовать использовать OutputDebugString или записать пароль в файл на стороне сервера, чтобы убедиться, что он получает его правильно.

Кроме того, вы используете последнюю версию Indy? Могут быть исправления, относящиеся к обработке строк.

...