Форум: "Основная";
Текущий архив: 2004.10.10;
Скачать: [xml.tar.bz2];
ВнизОшибка функции inifiles.readstring - как исправить Найти похожие ветки
← →
kiuv © (2004-09-23 18:57) [0]Представьте себе, пишу на d6 и запускаю ПО под win98. Оно выдает сообщение об ошибке.
Стал выяснять. Оказалось, что программа вылетает на строке чтения из ини файла!!!
Мая программа с компонетой TiniFiles в Винде 98 программа создала и работает
с таким инифайлом пример ниже:
[Paths]
WinDir=C:\WIN98
WinBootDir=C:\WIN98
HostWinBootDrv=C
[Options]
BootMulti=1
BootGUI=1
DoubleBuffer=1
AutoScan=1
Откомелированая под W2K программа с компонетой TiniFiles в W2K хочет работать
с таким инифайлом:
[Paths]
WinDir=C:\WINNT
WinBootDir=C:\WINNT
HostWinBootDrv=C
[Options]
BootMulti=1
BootGUI=1
DoubleBuffer=1
AutoScan=1
Как в W2K заставить программу работать со старым инифайлом (с
пропуском строки между секциями)?
Я запутался,если подскажите или направите буду благадарен.
Зарание большое спасибо!
← →
Квэнди © (2004-09-23 19:00) [1]Первый вопрос: а зачем? ты же по идее не смотришь этот файл, он же для служебных нужд...
← →
Квэнди © (2004-09-23 19:03) [2]и еще: а разве w98 не будет работать с второй версией файла?
← →
Defunct © (2004-09-23 20:07) [3]> Представьте себе, пишу на d6 и запускаю ПО под win98.
Представьте себе пишу на D7, ни разу не использовал компонент TIniFiles, и надеюсь никогда не буду использовать.
> Оно выдает сообщение об ошибке.
Ну надо же, какая беда..
> Стал выяснять. Оказалось, что программа вылетает на строке чтения из ини файла!!!
Ну и что ж вы выяснили? Получается выяснили только ситуацию когда появляется ошибка, но причину вы ведь не выяснили. С какой такой радости программа вылетает?! на строчке какого-то левого файла? Смотрите код программы, а не ковыряйте ini-файл, толку будет больше. Тут либо компонент "подгулявший", либо ошибка в программе.
> Как в W2K заставить программу работать со старым инифайлом (с пропуском строки между секциями)?
1. Исправить ошибку в программе.
2. Взять другой компонент для работы с Ini файлами.
3. Искать другие способы работы с ini файлом, например загрузить его в TStringList.
> Я запутался,если подскажите или направите буду благадарен.
1. Старайтесь не использовать сильно "вумные" компоненты для выполнения простой работы.
2. Старайтесь анализировать собственный код программы.
3. Не полагайтесь на других программистов, которые выпускают бесплатные компоненты.
← →
П7 (2004-09-23 23:02) [4]Эээх!!! Сильно задвинул!!! Полностью поддерживаю!!!
← →
Palladin © (2004-09-24 01:33) [5]
> kiuv © (23.09.04 18:57)
Если ты действительно 63 то я 171 до нашей эры... запутатся в трех соснах не каждому дано...
← →
jack128 © (2004-09-24 02:52) [6]Defunct © (23.09.04 20:07) [3]
ни разу не использовал компонент TIniFiles, и надеюсь никогда не буду использовать.
А что так?? Очень удобный механизм..
2Автор.
Забей на сторонние компоненты и используй стандартный TIniFile.
← →
Defunct © (2004-09-24 03:11) [7]> А что так?? Очень удобный механизм..
так исторически сложилось, а менять привычки тяжело да и смысла нет.
Зы: а разницу вы почуствовали TIniFile и TIniFiles? ;)
← →
П7 (2004-09-24 09:30) [8]
> jack128 © (24.09.04 02:52) [6]
По мне, так уж лучше пользоваться WinAPI"шными функциями. Там хоть можно всё содержимое секции получить, если в идентивикатор передать пустую строку. А этот тупой TIniFile просто ломается на таком запросе. Мог бы хотябы дефолтовое значение возвратить, но нет же... Лично я написал свой класс работы с ini-файлами. Пусть он тормозной, но для ini-файлов скорость и не нужна большая. Секундой больше, секундой меньше...
← →
jack128 © (2004-09-24 12:22) [9]Defunct © (24.09.04 3:11) [7]
Зы: а разницу вы почуствовали TIniFile и TIniFiles? ;)
почувствовал. И еще заметил слово "компонент".
← →
kiuv © (2004-09-27 14:56) [10]Спасибо за замечания.Этот ининциализационый файл используют две разные программы. Одна работает уже давно под W98, а другая W2K. И старая программа использует класс TIniFile "uses TIniFiles;".
Попробую TStringList использовать. Как пользоваться WinAPI"шными функциями не разобрался, а классом TIniFile кажется удобней. Так как мне кажется все новое - это забытое старое.
← →
TUser © (2004-09-27 15:14) [11]
> uses TIniFiles
Вот никто и не знает, что за модель ты подцепил :(
По сабжу - D7, TIniFile работает нормально в W2K, и пустые строки между секциями ему - не помеха.
← →
panov © (2004-09-27 15:48) [12]
function IniName:String;
var
Len: Integer;
begin
Result := ParamStr(0);
Len := Length(Result);
Result[Len] := "i";
Result[Len-1] := "n";
Result[Len-2] := "i";
end;
function GetParmStr(const aSec,aParm:String): String;
var
LenBuf: Integer;
begin
SetLength(Result,4096);
try
LenBuf := GetPrivateProfileString(PChar(aSec),PChar(aParm),"",PChar(Result),4096,PChar(IniName));
SetLength(Result,LenBuf);
except
Result :="";
end;
end;
function WriteParmStr(const aSec,aParm,aValue:String):Boolean;
begin
Result := Boolean(WritePrivateProfileString(PChar(aSec),PChar(aParm),PChar(aValue),PChar(IniName)));
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.10.10;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.034 c