Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 1 121

/ вопрос открыт /

Здравствуйте, эксперты!
Мне необходимо написать программу для курсовой, одна из функций которой - кодирование данных. Для кодирования файла я использую процедуру с XOR. Процедура эта находится в DLL, и для работы требует два параметра: путь к исходному файлу и путь по которому создается кодированный файл. Когда я подключаю DLL статически программа работает, а когда динамически через LoadLibrary() - нет. Выдается ошибка I/O 123. Помогите пожалуйста.

Jake Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Jake (статус: Посетитель)
Вопрос отправлен: 17 ноября 2007, 22:29
Состояние вопроса: открыт, ответов: 2.

Ответ #1. Отвечает эксперт: Вадим К

Здравствуйте, Jake!
К сожаленью, нет такого кода ошибки 123. скорее всего это был либо 12 и 3, тогда
3 - Путь не найден
12 - неверный режим открытия файла
или это был 103 - файл не открыт.

Учитывая ваше скудное описание ошибки, смею проедположить, что в длл передаётся не полный путь к файлу, а отностительный. И при статической загрузке текущий каталог совпадает с каталогом программы, а при динамическом - нет. Это очень хорошо согласуется с приведёнными выше ошибками.
Что делать. попробывать передать полный путь к файлу. Надо помнить, что OpenDialog может изменять текущий каталог.
Если это не поможет, то попробуйте работать "в режиме недоверия". тоесть в длл в функции проверять параметры. например наличие файла можно проверить функцией FileExsist(имяфайла). Она возвратит True, если файл есть.
Также могут быть проблемы, если путь,куда будет сохраняться файл, не существует. но его можно создать функцией

function ForceDirectories(const Dir: String):Boolean;
Она возвратит True, если создание было успешным. Главный плюс этой функции - она может создавать каталоги рекурсивно - тоесть 2, 3 и более каталогов, если это надо.

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 17 ноября 2007, 23:43

Ответ #2. Отвечает эксперт: Feniks

Здравствуйте, Jake!
Дополнение к Вадим К.
Если Вы передаете стринговый параметр в функции ДЛЛ, то он должен быть только типа PChar !!! Увы, но таковы законы Билли. :-)

Ответ отправил: Feniks (статус: Бакалавр)
Время отправки: 19 ноября 2007, 10:59


Мини-форум вопроса

Всего сообщений: 1; последнее сообщение — 19 ноября 2007, 11:01; участников в обсуждении: 1.
Feniks

Feniks (статус: Бакалавр), 19 ноября 2007, 11:01 [#1]:

Еще в идеале было бы, если Вы пришлете свой код ДЛЛ и программы.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 16:47
Выполнено за 0.02 сек.