Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi AV bei TreeView (https://www.delphipraxis.net/57389-av-bei-treeview.html)

Neutral General 20. Nov 2005 16:11


AV bei TreeView
 
Hi,

wenn ich folgende Procedure aufrufe bekomme ich eine Zugriffsverletzung.
Games ist ein Record.

Delphi-Quellcode:
procedure TMain.RefreshGames;
var i: Integer;
begin
 TreeView1.Items.Clear;
 for i:= 0 to GameCount-1 do begin
   TreeView1.Items.AddChild(nil,Games[i].Name);
  end;
end;
Bevor der Quellcode oben ausgeführt wird wird noch das ausgeführt:
(Wobei die nicht direkt nacheinander aufgerufen werden...)

Delphi-Quellcode:
procedure TMain.SetGames;
var i: Integer;
    Ini: TIniFile;
begin
 Ini := TIniFile.Create(ExtractFilePath(Application.ExeName)+'config.ini');
 with Ini do begin
  GameCount := Ini.ReadInteger('Count','Count',0);
  SetLength(Games,GameCount);
  for i:= 0 to GameCount-1 do begin
   Games[i].Name := Ini.ReadString('Game'+IntToStr(i),'Name','');
   Games[i].Path := Ini.ReadString('Game'+IntToStr(i),'Path','');
   Main.TreeView1.Items.AddChild(nil,Games[i].Name);
  end;
  Free;
 end;
 for i:= 0 to Main.TreeView1.Items.Count-1 do begin
  GetFiles('Mods\' + Main.TreeView1.Items.Item[i+found].Text + '\',Main.TreeView1.Items.Item[i+found]);
  // Das GetFiles Zeug ist nicht so wichtig...
 end;
end;
Ich verzweifel noch. Zuerst hatte ich gedacht ich hätte irgendwo Setlength(Games,GamesCount) vergessen aber das war nicht der Fall. Ich kann mir das einfach nicht erklären -.-

PS: Es hat, wie ich gerade gemerkt habe, auch nichts damit zu tun, das ich ungünstigerweise eine Eigenschaft "Name" genannt habe..

Grunzke 21. Nov 2005 15:04

Re: AV bei TreeView
 
Hat den hier für keine eine Idee?

dahead 21. Nov 2005 15:07

Re: AV bei TreeView
 
also erstmal würde ich für beginupdate/endupdate plädieren.

dann solltest du dir eine ShowMessage einbauen, die dir mal die anzahl der elemente anzeigt.
falls das nicht zur problemlösung beiträgt, würde ich die showmessage noch in den for-loop einbauen und die infos anzeigen.
du könntest auch einen breakpoint auf das addchild setzen um zu sehen an welcher stelle/position es kracht.

edit: arbeitet ihr zusammen oder push'st du für ihn?

Muetze1 21. Nov 2005 15:57

Re: AV bei TreeView
 
Und ich würde bei der RefreshGames Methode nicht GamesCount nutzen sondern direkt einfach die Array Länge wie sie tatsächlich ist. Das Array weiss doch wie lang es ist, warum also noch extra eine Variable dafür mit rumschleppen?
Delphi-Quellcode:
For i := Low(Games) To High(Games) Do
und gut ist.

Neutral General 21. Nov 2005 16:25

Re: AV bei TreeView
 
@ dahead: Wir arbeiten zusammen ;)

Ok ich werde mir die Vorschläge mal ansehen und ausprobieren :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:03 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz