Некоторые поля в INI-файлах не сохраняются, если путь к INI-файлу длиннее 128 символов - PullRequest
0 голосов
/ 14 октября 2010

Я работаю над программой в Visual Studio 2003 C ++, которая сохраняет данные в файлах .ini.Программа уже написана;Это полнофункциональное приложение для Windows, которое анализирует данные пациента, взятые из лаборатории сна (много-много строк кода).

Программа использует INI-файлы для чтения и записи данных пациента, таких как имя пациента, идентификатор пациента, имя врача и т. Д.На днях мой начальник сказал мне, что если путь к .ini слишком длинный, некоторые данные не сохраняются.

При дальнейшей проверке я обнаружил, что если полный путь к файлу .ini превышает 128 символов, некоторые поля в этом файле .ini не сохраняются на диск.Это странно, потому что другие поля сохраняются, а другие нет.

Я не уверен, это проблема с Windows, или это может быть связано с кодом?Код использует функции GetPrivateProfileString () и WritePrivateProfileString () для записи и чтения из INI-файлов.Насколько я вижу, он обрабатывает все INI-файлы одинаково и просто считывает их при необходимости и записывает в них при сохранении файла.

Мне действительно любопытно, почему некоторые поля сохраняются, а некоторые нет, если путь превышает 128 символов.У кого-нибудь есть идеи относительно того, к какой области может относиться эта проблема и что происходит за кулисами, чтобы сделать это?

Программа написана с: Visual Studio 2003

ОС: WindowsXP

Спасибо за любую помощь и понимание:)

******* РЕДАКТИРОВАТЬ: поворотыВ коде используется функция OpenFile http://msdn.microsoft.com/en-us/library/aa365430(VS.85).aspx для открытия INI-файлов, и это позволяет использовать не более 128 символов.

Я собираюсь попытаться изменить функциональность на функцию CreateFile без прерываниякод ....

1 Ответ

0 голосов
/ 14 октября 2010

Я предполагаю, что где-то в вашем коде есть буфер CHAR с именем файла размером 128 байт.В зависимости от того, что такое кодовый путь, использование более длинной строки имени файла в этом буфере может работать или не работать.Вполне возможно, что некоторые записи могут работать, а другие - нет, хотя, если ваш код правильно обрабатывает ошибки, вы можете подумать, что узнаете об ошибках через соответствующие журналы ошибок.

...