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

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

Napisano vse pravilno, no ne rabotaet??? [D7, WinXP]


pr0t0n ©   (2005-09-19 21:12:00) 

hi, mastera! Vobshem tema takay est ListView v nem 2,3.....(N), koroche luboe kolichestvo items, pri sobitii OnChange voznikaet oshibka 'Acces violation at adress XXXXXXXX in modul Project.exe
Read of adres XXXXXXXX.
   Smisol procedure - pri videlenie itema, v Edit1,Edit2...Edit(N) zagrujautsya iz IniFila danie.
Koroche ya stavlu bryak na OnChange i viju:
  1.Prohodit perviy krug po procedure c danime ot starogo itema t.e
(est 2 itema A i B, Videlen B-on je stariy, Videlyaemiy A-on je noviy)
Edit1.text:=ini.readString(ListView1.selected.caption, 'Name','');
na pervom kruge vse OK, ListView1.selected.caption=Staromu znacheniu.
 2.Nachinaetsya vtoroy krug, teper ListView1.selected.caption='';
i voznikaet oshibka.
 3. Posle oshibki, vse gruzit'sya na svoi mesta.

Poesnenie, ni kakih ciklov i t.p. u menya v procedure net, eto pro krugi.
Poluchaetsya chto ya,(komputer) 2 raza proceduru prohoju v otladchike.

Vopros:
a) S kakogo u meny vnachale gonit so starimi danimi, a potom s pustim ListView1.selected.caption???.
b) Kto nibud obesnite eto....... daje neznau kak obozvat.

zaranee Spasibo.


DiamondShark   (2005-09-20 18:05:00) [1]


> pr0t0n ©   (20.09.05 17:26) [4]

А проверить свойство на равенство nil перед обращением к нему что мешает?

А вообще, чтоб уяснить себе, что происходит в ListView при переходе между итемами, погоняй вот такую игрушку:


procedure TForm1.ListView1Change(Sender: TObject; Item: TListItem; Change: TItemChange);
const
 BoolStr: array[boolean] of string = ('false', 'true');
begin
 if Item <> nil then
   ShowMessageFmt('Item: %s'#13'Selected: %s'#13'Focused: %s', [Item.Caption, BoolStr[Item.Selected], BoolStr[Item.Focused]])
 else
   ShowMessage('nil');
end;


zx   (2005-09-20 17:39:00) [2]

У меня есть русские кнопки! Недорого!!!


Плохиш   (2005-09-20 17:31:00) [3]


> pr0t0n ©   (20.09.05 17:26) [4]
> po russki ne pishu potomuchto net russkih bukv na klaviature,

U teba russkih knopok netu, a u nas o4eredx k okulistu za mnogo mesacew wpered zanimatx nado.


pr0t0n   (2005-09-20 17:26:00) [4]

po russki ne pishu potomuchto net russkih bukv na klaviature,
Djo, prichm tut diversiya,
Svoystvo selekt v etom sluchae kakraz = nill, provereno.
Kak polzovatsya parametrom sobitiy???

vot ishodnik.
procedure TForm1.LWChange(Sender: TObject; Item: TListItem;
 Change: TItemChange);
var
 ini : TiniFile;
 dir : string;
begin
 Getdir(0,Dir);
 ini:=TiniFile.Create(dir+'\BASE\'+TW.Selected.Text+'.bse');
 shifr(0,dir+'\BASE\'+TW.Selected.Text+'.bse');
  try
    edName.Text:=Ini.ReadString(LW.Selected.Caption,'Name','');
    edLogin.Text:=Ini.ReadString(LW.Selected.Caption,'Login','');
    edPass.Text:=Ini.ReadString(LW.Selected.Caption,'Pass','');
    edAdres.Text:=Ini.ReadString(LW.Selected.Caption,'Adres','');
    edDate.Text:=Ini.ReadString(LW.Selected.Caption,'Date','');
  finally
    shifr(1,dir+'\BASE\'+TW.Selected.Text+'.bse');
    ini.Free;
  end;
 end;
end;


DiamondShark   (2005-09-19 23:03:00) [5]

Свойство Selected может быть nil.
Надо проверять.

А почему не пользуешься параметром события?


ANB   (2005-09-19 21:14:00) [6]

А по русски написать тоже самое религия не позволяет ?


Джо   (2005-09-19 21:14:00) [7]

Это диверсия.


Наверх

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