Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.033 c
6-1091362783
maguk
2004-08-01 16:19
2004.10.10
Вопрос по SOCK_RAW


4-1094636556
HeKTO
2004-09-08 13:42
2004.10.10
Подскажите функцию определения координат чужого окна..забыл...


3-1095146824
chis
2004-09-14 11:27
2004.10.10
Как открыть TADODataSet не полностью?


1-1095798519
][ncognito
2004-09-22 00:28
2004.10.10
New()


1-1095425335
MakNik
2004-09-17 16:48
2004.10.10
EInvalidPointer





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский