Текущий архив: 2003.09.18;
Скачать: CL | DM;
ВнизНе могу понять в чем ошибка :( Найти похожие ветки
← →
Ghost (2003-09-06 13:37) [0]Работаю с ini файлом , если приложение работает и вызываешь такой код при нажатии на кнопку то всё ок !
if ini.ReadString("exe0","window","") <> "" then L2.Items[0].SubItems[1]:= ini.ReadString("exe0","window","");
if ini.ReadString("exe1","window","") <> "" then L2.Items[1].SubItems[1]:= ini.ReadString("exe1","window","");
if ini.ReadString("exe2","window","") <> "" then L2.Items[2].SubItems[1]:= ini.ReadString("exe2","window","");
if ini.ReadString("exe3","window","") <> "" then L2.Items[3].SubItems[1]:= ini.ReadString("exe3","window","");
if ini.ReadString("exe0","path","") <> "" then L2.Items[0].SubItems[0]:= ini.ReadString("exe0","path","");
if ini.ReadString("exe1","path","") <> "" then L2.Items[1].SubItems[0]:= ini.ReadString("exe1","path","");
if ini.ReadString("exe2","path","") <> "" then L2.Items[2].SubItems[0]:= ini.ReadString("exe2","path","");
if ini.ReadString("exe3","path","") <> "" then L2.Items[3].SubItems[0]:= ini.ReadString("exe3","path","");
если ставишь его на таймер чтобы грузился при загрузке приолжения то выскакивает ошибка , хотя ini файл создаёться и обрабатываеться другими командами !
← →
y-soft (2003-09-06 13:39) [1]Есть подозрение, что в момент вызова при загрузке L2 еще не создан...
← →
Ghost (2003-09-06 13:40) [2]Ошибка такого типа : Acces violation at addres 0049e999 in module "Project1.exe" Read of addres 000000008
Не могу разобраться !
← →
y-soft (2003-09-06 13:41) [3]Еще больше подтверждает...
← →
Ghost (2003-09-06 13:41) [4]> y-soft
Я тоже так думал ставил на вызов обработки 2-5 сек времени чтобы все компоненты успели создаться ! но нет ! а так работает :( ( когда обработчик вызываешь сам )
← →
Zacho (2003-09-06 13:42) [5]Какая ошибка ? И нафига на таймер ? Вообщем, подробнее: где, когда и как создается ini и L2.
← →
y-soft (2003-09-06 13:45) [6]>Ghost © (06.09.03 13:41) [4]
У вас исключение явно говорит, что где-то идет обращение к nil
Так что действительно - приведите код
← →
Ghost (2003-09-06 13:45) [7]> Zacho
ini создаёться при FormCreate
код :
var pzm:string;
-------------
try
path:=ExtractFilePath(paramstr(0));
pzm:=path+"data\Config.cfg";
try
ini:=tinifile.Create(pzm);
except
end;
А L2 это listView и создавать его должна сама форма насколько я знаю !
← →
y-soft (2003-09-06 13:49) [8]Зря Вы раотаете по таймеру - он может запуститься еще до загрузки L2. Запускайте таймер явно, в самом конце FormCreate
← →
Zacho (2003-09-06 13:52) [9]И все равно не понял, зачем это делать по таймеру ???
← →
Ghost (2003-09-06 13:53) [10]> y-soft
Пробывал и без таймера та же ошибка ! как отследить успевает ли создаться Listview ?
← →
y-soft (2003-09-06 13:53) [11]Действительно, гораздо логичнее читать из INI в том же FormCreate...
← →
Ghost (2003-09-06 13:55) [12]У меня форма при старте скрываеться вот таким образом :
form1.Hide; может в этом дело ?
← →
Zacho (2003-09-06 13:55) [13]
> Ghost © (06.09.03 13:53) [10]
Ну а без таймера, где именно вызывается этот код ?
← →
y-soft (2003-09-06 13:55) [14]>Ghost © (06.09.03 13:53) [10]
ListView успевает создаться :)
А breakpoint в отладчике ставить не пробовали?
← →
Zacho (2003-09-06 13:55) [15]
> Ghost © (06.09.03 13:55) [12]
Нет, не в этом.
← →
Ghost (2003-09-06 13:56) [16]При CreateForm из ini файла читать dcq равно почему то не получаеться ! но это уже другая проблема ! как всётаки узнать успел ли создаться Listview ?
← →
Zacho (2003-09-06 13:59) [17]
> Ghost © (06.09.03 13:56) [16]
> как всётаки узнать
> успел ли создаться Listview ?
А зачем ? В OnCreate он уже создан.
← →
Ghost (2003-09-06 14:00) [18]> Zacho
> Ну а без таймера, где именно вызывается этот код ?
Код вызывался из actionList при задержке после старта в 1 сек ( без таймера )
Причём вся загрузка шла на отлично ( то есть из тогоже файла ini брались данные и записывались в listbox и checkbox )
У меня такая проблема появилась как раз когда поставил Listview скорей всего в нём проблема !
> y-soft
> А breakpoint в отладчике ставить не пробовали?
Пробывал ! но или я ещё толком не научился им пользоваться или дело действительно запутанное :(
← →
Sniffer (2003-09-06 14:00) [19]>>Ghost
Напиши свой
try
ini:=tinifile.Create(pzm);
except
end;
в OnShow формы. 100% ListView создаётся раньше.
← →
Ghost (2003-09-06 14:02) [20]> Sniffer
1) у меня нет OnShow ! она закрыта так как программа работает в фоновом режиме !
2) тет дело не в создании ini ! ( дрегие функции работают нормально ) а в загрузке его в listview
← →
y-soft (2003-09-06 14:03) [21]Ну так и поставьте breakpoint на строчку
if ini.ReadString("exe0","window","") <> "" then L2.Items[0].SubItems[1]:= ini.ReadString("exe0","window","");
И, когда дойдет до нее очередь, посмотрите значения Ini и L2
← →
y-soft (2003-09-06 14:05) [22]Кстати, Вы как L2 заполняете? В смысле - Items[0] и SubItems[1] на момент вызова уже существуют?
← →
cyborg (2003-09-06 14:05) [23][19] Sniffer © (06.09.03 14:00)
Не нужно советовать таких кошмаров - при каждом показе формы будет создаваться ini.
← →
Ghost (2003-09-06 14:10) [24]точно ! сделал загрузку значений не в Listview а в переменные
I1,I2,I3,I4:string; Ошибки не возникло ! значит виноват во всём Listview ! кстати Items[0] и SubItems[1] на момент записи уже есть !
← →
y-soft (2003-09-06 14:13) [25]кстати Items[0] и SubItems[1] на момент записи уже есть !
Вы это точно в отладчике видели?
← →
Ghost (2003-09-06 14:16) [26]> y-soft
Я их сам создал в режиме проектирования ! я так думаю что там они должны быть !
Кстати что я установил : пока не покажешь форму записать значения нельзя :(
← →
y-soft (2003-09-06 14:26) [27]В Вашем случае ясно одно - при попытке записи значения в ListView возникает исключение при чтении по недействительному указателю. Вот этот указатель и надо найти.
Это может быть либо Items[], либо SubItems[] - другого тут вроде бы быть не должно...
Страницы: 1 вся ветка
Текущий архив: 2003.09.18;
Скачать: CL | DM;
Память: 0.5 MB
Время: 0.01 c