![]() |
Schleife mit Ini Datei: EAccesViolation
Hallo zusammen. Mein Gott...ich und die Ini Dateien.
Ich krieg bei folgendem Code immer eine EAccesViolation. Ich habe ein EditFeld, in das ich einen Namen eingeben und eine Listbox, in der alle vorhandenen Kategorien sind. Jetzt will ich, dass das Programm den String einer zeile ausliest, eine IniDatei mit dem Namen des Strings öffnet und dann, falls der String aus dem Editfeld in der Ini Datei als Section existiert, den Namen der gerade durchsuchten Ini in die erste Zeile des StringGrid schreibt. (...Hoffentlich versteht ihr das, ich verstehs nämlich selber fast nicht :oops: ) Könnt ihr mir sagen, wo da der Fehler liegt?
Delphi-Quellcode:
Danke fürs Lesen. Man liest sich. Stanlay
procedure TForm1.BilderSuche(LBS1: TListbox);
var BilderSuchIni : TIniFile; BilderSuchInt : Integer; begin For BilderSuchInt := 0 to LBS1.Items.Count -1 do BilderSuchIni := TIniFile.Create(PathS+LBS1.Items.Strings[BilderSuchInt]+'.ini'); //PathS ist der Programmpfad ; Try IF BilderSuchIni.SectionExists(Edit1.Text) THEN // <--- Hier bekomm ich nen Error StringGrid1.Cells[0,StringGrid1.RowCount-1] := LBS1.Items.Strings[BilderSuchInt]; StringGrid1.Cells[1,StringGrid1.RowCount-1] := Edit1.Text; StringGrid1.Row := StringGrid1.Row +1; end; finally FreeAndNil(BilderSuchIni); end; end; |
Hallo,
das Create der Ini, vor die for-Schleife, Du erzeugst/öffnest ja ständig die gleiche Datei. ;) Grüsse, Daniel :hi: |
Hallo,
und die Schleife ins try.
Delphi-Quellcode:
Grüsse, Daniel :hi:
Ini.Create
try for finally end |
Das Problem ist ja. Ich hab ja auch mehrere Ini Dateien.
Das ganze ist so ne Art von Bild verwaltung (Fast...). Ich hab eine IniDatei in der alle Kategorien gespeichert werden. Und die Einträge jeder Gruppe, werden in einer extra Ini Datei gespeichert (Also zz.B. für die Kategorie Geburtstag hab ich eine Geburtstag.ini in der dann Section wie [Torte], [Geschenke] usw. gespeichert werden. Die Kategorien lese ich bei Programmstart in eine Listbox ein. Jetzt soll die For Schleife bei jedem Druchlauf schauen, ob es in irgendeiner dieser Inis ein Bild (eine Section gibt) die den Namen aus Edit1 hat. Ich muss also ständig eine neue Ini Datei öffnen. |
Hallo,
*grmpfl* In der falschen Sparte bist Du ja auch noch. Programmieren allgemein gilt für alles andere was nicht mit Delphi zutun hat! Ich verschiebe es mal nach Delphi-Language. Grüsse, Daniel :hi: |
Hallo,
vielleciht wäre es besser/einfacher, alle Inis auf einmal zu laden, in StringLists o.ä., damit dann in ruhe Arbeiten und am Ende wieder alle beschreiben. Grüsse, Daniel :hi: |
Da hast du natürlich recht. Aber dazu bräuchte ich ja eine ähnliche/fast gleiche Schleife, oder? (Ich hab ja eine unbekannte Anzahl an Kategorien, also Inis)
|
Hallo Stanlay,
wie Daniel bereits erklärt hat, öffnest du in der for-Schleife alle Ini-Daten nacheinander. Der folgende try Block wird dann nur noch mit der zuletzt geöffneten Ini-Datei durchgeführt. Du musst nach do einen begin ... end Block benutzen:
Delphi-Quellcode:
For BilderSuchInt := 0 to LBS1.Items.Count -1 do
{ hier jetzt das BEGIN } begin BilderSuchIni := TIniFile.Create(PathS+LBS1.Items.Strings[BilderSuchInt]+'.ini'); //PathS ist der Programmpfad ; Try IF BilderSuchIni.SectionExists(Edit1.Text) THEN ... end; |
:wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall:
DUMMMMMMMMMDUMMMMMDUMMMMM Ich Depp. Man, tut mir leid, dass ich eúch aufgehalten hab. Das was ihr schreibt, hab ich zwar auch alles richtig gemacht und muss ich noch verbessern, aber die EAccesViolation hab ich bekommen, weil ich eine falsche, nämlich leere Listbox übergeben hab. Tut mir leid, nächstes mal pass ich besser auf. (Schämmm) Man liest sich (falls jetzt noch wer auf meine Fragen antwortet) Stanlay. :oops: |
Moin Stanlay,
falls es Dich beruhigt: Den Fehler an der falschen Stelle zu suchen, ist wohl jedem schon mehr als einmal passiert ;-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:28 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