Текущий архив: 2003.02.17;
Скачать: CL | DM;
Внизпроблема в с записью в ini в ХР Найти похожие ветки
← →
TankMan (2003-02-07 21:17) [0]Люди не пойму... в чем прикол... вобщем в ХР, создаю объект типа inifile-a он вроде как бы создается... проверяю его даже на nil, потом пытаюсь записать writestring-ом название одно... так он говорит Violation access :( не пойму в чем прикол...
← →
Palladin (2003-02-07 21:20) [1]магическая 17тая строка... ищи ошибку там...
← →
Ich Hasse (2003-02-07 22:46) [2]Ini:= TIniFile.Create("C:\hello.ini");
Ini.Free;
Проверенно работает и в XP
← →
TankMan (2003-02-08 13:04) [3]Что за 17ая строка? где чего искать?
>>Ich Hasse
именно этим способом я и создаю ини... а вот при записи он выдает ошибку :(
clientini:=Tinifile.Create(Extractfilepath(application.exename)+configini);
if clientini<>nil then begin
clientini.ReadSection("Tabs",S);
for i:=0 to S.Count-1 do
clientini.EraseSection(S[i]);
clientini.EraseSection("Tabs");
S.Clear;
for i:=0 to TabsName.Count-1 do begin
clientini.WriteString("Tabs",TabsName[i].TabName,"");
if TabsName[i].GameName.Count>0 then begin
for j:=0 to TabsName[i].GameName.Count-1 do
clientini.WriteString(TabsName[i].TabName,TabsName[i].GameName[j],TabsName[i].GamePath[j]+","+TabsName[i].GameIconIndex[j]);
end
else
begin
if not clientini.SectionExists(TabsName[i].TabName) then
clientini.WriteString(TabsName[i].TabName,"",""); <<===Вобщем сдесь и вылетает ошибка...
end;
end;
bapply:=false;
btnApply.Enabled:=false;
frmMain.CreatePCGames(TabsName,frmMain.PCGames,self);
end;
end;
Коментарии вобщем сдесь излишни.. много прийдется описывать... но в общем структура использования ini тут ясна ИМХО...
← →
Palladin (2003-02-08 13:14) [4]вообще то кода от тебя в начале и трабовали
невозможно с ходу так сказать.
1. почему ты думаешь что если обхект TIniFile не создастся, то clientini будет Nil? ведь ты его перед созданием в nil не выставляешь.
2. почему ты решил что дело именно в WriteString? дело скорее всего в обращении к записываемым данным.
← →
Романов Р.В. (2003-02-08 13:20) [5]
> clientini.WriteString(TabsName[i].TabName, "","");
Очень подозрительные параметры
← →
Anatoly Podgoretsky (2003-02-08 13:44) [6]TankMan © (08.02.03 13:04)
И где защита от ошибок, и где информация о S, TabsName - что такое, создано ли
"Коментарии вобщем сдесь излишни" :-) вообще то да.
← →
Builder (2003-02-08 22:44) [7]А в ХР с ини файлами еще есть проблема в том, что каталог должен был бы быть открыт для записи, чего не всегда бывает :(
(типичный пример - ини в каталоге программы, он в Program Files, программа установлена под админом, а пользуеться обграниченный пользователь)
Так что лучше как рекомендует М$ - в реестр.
← →
TankMan (2003-02-08 23:20) [8]>>Palladin
1.Ну не знаю откуда я это взял... просто когда определяется тип данных какой-то переменной, и эта переменная никак не определена, то это значит, что она ссылается на nil. а если что-то всетаки ей присвоили... то значит ошибки небыло... хотя... я не уверен...вовсяком случае.. данный код работает в 98 без проблем...
2. Ну я не говорил, что ошибка именно в WriteString, я имею ввиду, что возникают проблемы при использовании его, т.е. записиси в ини...
>>Романов Р.В.
Да нормальные параметры... просто мне нужно создать запись в ини...в TabsName[i].TabName храниться название закладки одной... и мне нужно только ее название без каких либо параметров.. вовсяком случае на данном этапе разработки...
>>Anatoly Podgoretsky
А можно по конкретнее.. какую именно защиту вы советуете мне тут устроить? S и TabsName насколько я помню... модифицированные мной (чуть-чуть модифицированные) TStringlist... вот..
>>Builder
А как его открывать? Вовсяком случае я захожу в винды под root и никаких обычных пользователей...
А на счет реестра... это не для меня... мне потом эти ини шифровать... а в реестре хранить не надежно...
← →
Романов Р.В. (2003-02-08 23:43) [9]
> Да нормальные параметры
В том то и дело что не нормальные имя секции и ключа не должно быть пустым. Отсюда и ошибка.
Страницы: 1 вся ветка
Текущий архив: 2003.02.17;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.008 c