AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Fehlende Dateien in INI nicht laden/anzeigen
Thema durchsuchen
Ansicht
Themen-Optionen

Fehlende Dateien in INI nicht laden/anzeigen

Ein Thema von SoD · begonnen am 21. Apr 2009 · letzter Beitrag vom 22. Apr 2009
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von SoD
SoD

Registriert seit: 9. Dez 2008
Ort: Oberasbach
33 Beiträge
 
Delphi 2007 Professional
 
#1

Fehlende Dateien in INI nicht laden/anzeigen

  Alt 21. Apr 2009, 10:05
Fortsetzung dieses Threads: http://www.delphipraxis.net/internal...t.php?t=154330

Hallo liebe DPler,

in meinem letzten Thread ging es darum, aus einer INI-Datei 3 Komponenten zu speißen - MediaPlayer, ListBox & Memo. Mit der Hilfe aus dem Forum hab ich es wunderbar hinbekommen (Nochmals vielen Dank dafür! ). Nun soll das Programm erweitert werden und ich stehe mit selbem Projekt vor einem neuen Problem, das ich selbst nach Stunden des Tüftelns und Rumprobierens nicht in den Griff bekomme.

Nun brauche ich erneut eure Hilfe, es geht um Folgendes:

Da mein Programm seine ganzen Informationen aus einer INI zu beziehen hat kann es auch einmal zu Fehleintragungen in der INI selbst kommen. Nun soll der User nicht gleich durch Fehlermeldungen aus der Ruhe gebracht werden, sondern das Programm soll folgendermaßen reagieren:

1. Ließ die INI
2. Prüfe ob die Dateipfade aus der INI zu existierenden Dateien führen
3. Liste fehlerhafte Einträge gar nicht erst auf

Das Prüfen mit FileExists funktioniert und der Eintrag komm in der ListBox nicht vor, ABER mein Programm läd lediglich den Namen aus der nächsten Section, Pfad (MediaPlayer) und Beschreibung (Memo) werden aus der Section geladen, die eigentlich übersprungen werden sollte. Kurzum: Er lädt Titel 3 obwohl 4 gewählt wurde.

Das direkte Löschen der fehlerbehafteten Section aus der INI hat den Fehler auch nicht behoben (Er hat glaub ich sogar ne Exception geschmissen, weil Listenindex > Maximum).

Ich hab auch mit mehreren internen TStringLists versucht, die INI komplett in mein Programm zu laden und programmintern die Einträge zu löschen, was aber an den (nicht) bereitgestellten Methoden scheiterte (oder sie sind mir noch unbekannt).

Hier noch der Code:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
  Sektionen: TStringList;
begin
  VideoIni := TIniFile.Create(PChar(ExtractFilePath(ParamStr(0)) + 'files.ini'));
  Sektionen := TStringList.Create;
  ListBoxFiles.Items.Clear;
  VideoIni.ReadSections(Sektionen); // Alle Sektionsnamen sind nun in Sektionen gespeichert.

  for i := 0 to Sektionen.Count - 1 do
  if FileExists(VideoIni.ReadString(Sektionen[i],'Path','')) then //Prüfe auf vorhandene Datei
    begin
      ListBoxFiles.Items.Add(VideoIni.ReadString(Sektionen[i], 'Name','')); //Wenn vorhanden -> ListBox Eintrag hinzufügen
    end;
end;

procedure TForm1.ListBoxFilesClick(Sender: TObject);
begin
  try
    MemoDesc.Text := VideoIni.ReadString('Video' + IntToStr(ListBoxFiles.ItemIndex),'Desc','KEINE BESCHREIBUNG VORHANDEN'); //Lade Beschreibung
    MediaPlayerControl.FileName := VideoIni.ReadString('Video' + IntToStr(ListBoxFiles.ItemIndex),'Path',''); //Setze Dateiname für ausgewähltes Video
    MediaPlayerControl.Open;
  except
    error_with_file; //Falls dennoch was schief geht
  end;
end;
Vielen Dank schon mal für eure Mühen,

MfG
SoD
Keinen Bock anständig zu debuggen?
try stuff;
except ShowMessage('Bug, bug, bug!!! Dont do this shit!');
end;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Fehlende Dateien in INI nicht laden/anzeigen

  Alt 21. Apr 2009, 10:08
Kannst Du einmal eine beispielhafte Ini posten?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von SoD
SoD

Registriert seit: 9. Dez 2008
Ort: Oberasbach
33 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Fehlende Dateien in INI nicht laden/anzeigen

  Alt 21. Apr 2009, 10:13
Oh sorry, sicher kann ich das...

Code:
[Video0]       ; Vorhanden
Path=.\Tutorials\dms_formletter.wmv
Name=Serienbrief
Desc=Zeigt, wie mit dem DMS ein Serienbrief erstellt werden kann.

; Testvideos zur Fehlersuche

[Video1]
Path=C:\windows\clock.avi  ; Vorhanden
Name=Video1
Desc=Video1

[Video2]
Path=C:\clock.avi  ; Gibt's nicht - Fehlerprovokation
Name=Video2
Desc=Video2

[Video3]
Path=C:\WINDOWS\Clock.avi  ; Vorhanden
Name=Video3
Desc=Video3
Seit dem letzen Mal hat sich daran halt nur nicht viel geändert.
Keinen Bock anständig zu debuggen?
try stuff;
except ShowMessage('Bug, bug, bug!!! Dont do this shit!');
end;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#4

Re: Fehlende Dateien in INI nicht laden/anzeigen

  Alt 21. Apr 2009, 10:14
Zitat:
Das direkte Löschen der fehlerbehafteten Section aus der INI hat den Fehler auch nicht behoben (Er hat glaub ich sogar ne Exception geschmissen, weil Listenindex > Maximum).
Wierum hast du gelöscht?
Von vorn nach hinten (Index 0 bis maximum) oder umgekehrt?

Du mußt rückwärts löschen, wenn du eine For-Schleife nutzt (bei While mit angepaßtem Index geht's dennoch vorwärts)
Denn wenn du was löschst, verschieben sich die dahinterliegenden Daten um einen Index vor.

> 0 1 2 3 4 5 6
wenn ich z.B. die 3 lösche und dann auf die 6 zugreifen will > *boom* es kracht, da die 6 ja nun die 5 ist
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von SoD
SoD

Registriert seit: 9. Dez 2008
Ort: Oberasbach
33 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Fehlende Dateien in INI nicht laden/anzeigen

  Alt 21. Apr 2009, 10:17
Zitat von himitsu:
wenn ich z.B. die 3 lösche und dann auf die 6 zugreifen will > *boom* es kracht, da die 6 ja nun die 5 ist
Ja, das ist mir dann auch aufgefallen, weswegen ich die Idee dann gleich wieder verworfen hab. Wollte damit eh nur testen, ob's ein Lösungsweg gewesen wäre - was sich ja dann ergeben hat
Keinen Bock anständig zu debuggen?
try stuff;
except ShowMessage('Bug, bug, bug!!! Dont do this shit!');
end;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#6

Re: Fehlende Dateien in INI nicht laden/anzeigen

  Alt 21. Apr 2009, 10:21
Zitat von SoD:
Ja, das ist mir dann auch aufgefallen, weswegen ich die Idee dann gleich wieder verworfen hab. Wollte damit eh nur testen, ob's ein Lösungsweg gewesen wäre - was sich ja dann ergeben hat
einfach die Schleife von hinten nach vorn und schon geht's wieder

Delphi-Quellcode:
// im prinzip statt dem
for i := 0 to ini.Count - 1 do
  if exists(ini.value[i]) then delete(...);

// es einfach sorum versuchen ^_^
for i := ini.Count - 1 downto 0 do
  if exists(ini.value[i]) then delete(...);
(Achtung Pseudocode: nicht zum direkten Nachmachen geeignet )
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von SoD
SoD

Registriert seit: 9. Dez 2008
Ort: Oberasbach
33 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Fehlende Dateien in INI nicht laden/anzeigen

  Alt 21. Apr 2009, 10:38
Hab's mal deinem Beispiel entsprechend in meinem Code versucht aber dann lädt er die Liste verkehrt herum, was ja eigentlich auch die Anweisung im Code vorgibt. Nur wäre es nicht ganz so wahrheitsgemäß, wenn das letzte Video in der ListBox dem eigentlich ersten Eintrag in der INI entspricht.
Keinen Bock anständig zu debuggen?
try stuff;
except ShowMessage('Bug, bug, bug!!! Dont do this shit!');
end;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Fehlende Dateien in INI nicht laden/anzeigen

  Alt 21. Apr 2009, 10:52
Der Code war ja nicht für das Laden gedacht, sondern zum Löschen ungültiger Einträge
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#9

Re: Fehlende Dateien in INI nicht laden/anzeigen

  Alt 21. Apr 2009, 10:54
wenn du Löschen und Laden gleichzeitig machen willst, dann mußt du deine Liste dann natürlich auch nochmals "andersrum" (doppelt umgedreht, also jetzt sozusagen wieder richtig) anzeigen
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von SoD
SoD

Registriert seit: 9. Dez 2008
Ort: Oberasbach
33 Beiträge
 
Delphi 2007 Professional
 
#10

Re: Fehlende Dateien in INI nicht laden/anzeigen

  Alt 21. Apr 2009, 12:31
Oder eben halt die ungültigen Einträge gar nicht erst mitladen oder umgekehrt ausgedrückt, nur ausschließlich die laden die gültig sind. Das war ja auch der ursprüngliche Plan, nur hab ich keinerlei Methode gefunden, mit der ich das im Nachhinein bewerstelligen könnte. Und das Problem, dass die falschen Daten zum Falschen Eintrag geladen werden besteht ja weiterhin.

[edit]
Das mit dem doppelt rückwärts laden hat nicht ganz so geklappt, er sagt bei Video3 immer noch erster Eintrag in der INI Datei (dms_formletter.wmv).
[/edit]
Keinen Bock anständig zu debuggen?
try stuff;
except ShowMessage('Bug, bug, bug!!! Dont do this shit!');
end;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz