Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Open Array Problem
blackbirdXXX - Mo 03.11.03 19:38
Titel: Open Array Problem
Ich habe eine Ini Datei die u.A. Dateinamen auflistet
Quelltext
1: 2: 3: 4:
| [Filename] filename_1 = datei.doc filename_2 = datei2.doc .... |
Ich habe mir das so gedacht:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| var fname: Array of String;
procedure TForm1.LoadIni; begin ini := TIniFile.Create(pdir + '\filelist.ini'); max := ini.ReadInteger('Filname', 'Items', 1); for i := 1 to max do fname[i] := ini.ReadString('Filename', 'File_' + IntToStr(i), 'na'); ini.Free; end; |
Geht nur nicht. Wenn ich LoadIni aufrufe taucht:
| Zitat: |
| Access violation at address 00404410 in module 'setup.exe'. Write of address 00000004. |
auf.
Wenn ich aber
Delphi-Quelltext
1:
| var fname: Array[1..10000] of String; |
eingebe funktioniert das. Wenn ich aber über 10000 Dateien habe ist das Array erschöpft. Gibt es da eine Lösung?
smiegel - Mo 03.11.03 20:29
Hallo,
Du musst dem Array schon mitteilen, wieviel Einträge es aufnehmen soll:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| procedure TForm1.LoadIni; begin ini := TIniFile.Create(pdir + '\filelist.ini'); max := ini.ReadInteger('Filname', 'Items', 1); SetLength(fname, max); for i := 1 to max do fname[i] := ini.ReadString('Filename', 'File_' + IntToStr(i), 'na'); ini.Free; end; |
blackbirdXXX - Mo 03.11.03 20:45
:( Dann bekomme ich überhaupt 3 Fehlermeldungen:
| Zitat: |
| Access violation at address 00404436 in module 'setup.exe'. Read of address 00000186. |
| Zitat: |
Exception EInvalidPointer in module setup.exe at 00002754.
Invalid pointer operation. |
| Zitat: |
| Runtime error 217 at 00402754 |
smiegel - Mo 03.11.03 20:54
Hallo,
Uups, hab' ich vorher nicht drangedacht: Der Index des Arrays beginnt mit 0, nicht mit 1. D.h., Du musst Deine Schleife entsprechend anpassen.
blackbirdXXX - Mo 03.11.03 21:30
:D Ich zähle jetzt einfach am Ende 1 dazu und es geht. Danke fürs helfen.
barfuesser - Di 04.11.03 08:40
Delphi-Quelltext
1: 2:
| FileList := TStringList.Create; ini.ReadSectionValues('Filename', FileList); |
FileList enthällt dann für jede Datei den entsprechenden Eintrag aus der Ini. Zugreifen auf die Dateinamen tust dann folgendermaßen:
Delphi-Quelltext
1: 2: 3: 4:
| for i:=0 to FileList.Count -1 do begin FileName := FileList.Values[FileList.Names[i]]; end; |
barfuesser
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!