Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Ошибка функции inifiles.readstring - как исправить [D6, Win95/98, Win2k]


Донской ©   (2004-09-21 02:18:00) 

Вечер добрый!!!
Представьте себе, пишу на d6 и запускаю ПО под win98. Оно выдает сообщение об ошибке Ошибка доступа к странице памяти в модуле krnl386.exe.
Стал выяснять. Оказалось, что программа вылетает на строке
чтения из ини файла!!!
При этом сам файл существует, не существует только секции, к которой обращается функция. Ведь в этом случае функция должна вернуть значение по-умолчанию, а она приводит к ошибке приложения почему-то...
Вот код.


MyInifile:=tinifile.create(filepathtmp);
  showmessage('filepathtmp= '+filepathtmp);
  try
  with MyInifile do
     begin
        fMain.top:=readinteger('WindowSizes','Top',0);
        showmessage('1');
        fMain.left:=readinteger('WindowSizes','Left',0);
        showmessage('2');
        fMain.Height:=readinteger('WindowSizes','Height',400);
        showmessage('3');
        fMain.width:=readinteger('WindowSizes','Width',700);

        showmessage('4');
        DBPath:=readstring('DB','Path','...');

        showmessage('5');
        M3UDir:=readstring('Properties','M3UDir','...');
        showmessage('6');
        if m3udir='' then m3udir:='...';
        showmessage('7');
        if m3udir[length(m3udir)]<>'\' then
           m3udir:=m3udir+'\';
        showmessage('8');

        LengthErrorMinus:=readinteger('Properties',
              'LengthErrorMinus',0);
        showmessage('9');
        LengthErrorPlus:=readinteger('Properties',
              'LengthErrorPlus',0);
        showmessage('10');
     end;
  finally
     freeandnil(MyInifile);
     showmessage('11');
     deletefile(filepathtmp);
     showmessage('12');
  end;


Я везеде понаставил showmessage для того, чтобы понять где она все-таки вылетает, другого способа не было. И оказалось, что вылетает она после показа сообщения "4" (выделено жирным).
Что делать???? Ума не приложу.
Работаю в d6 с update2.


ДОнской   (2004-09-21 02:31:00) [1]

Во блин.
ЗАменил слово Path на Path1 и все заработало.
Не знаю чем это объяснить.
Вроде ж это всего лишь имя ключа в секции ини файла.
Кто знает?


Наверх

Титульная страница Поиск, карта сайта Написать письмо