AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

INI mit Schleife auslesen

Ein Thema von SoD · begonnen am 18. Mär 2009 · letzter Beitrag vom 19. Mär 2009
Antwort Antwort
Seite 3 von 3     123   
Benutzerbild von SoD
SoD

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

Re: INI mit Schleife auslesen

  Alt 19. Mär 2009, 13:14
Zitat von nahpets:
mal damit versuchen
Delphi-Quellcode:
MemoDesc.Lines.Clear;
for i := 0 to VideoDesc.Count - 1 do
begin
  MemoDesc.Lines.Add(VideoIni.ReadString(VideoDesc[i],'Desc',''));
end;
D'oh!

Das hätte mir auffallen sollen.

Natürlich muss ich die Lines mit add füllen!

Danke!

[add]

Nanu? Aber wieso bringt er jetzt alle Beschreibungen aus jeder Section???
Keinen Bock anständig zu debuggen?
try stuff;
except ShowMessage('Bug, bug, bug!!! Dont do this shit!');
end;
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#22

Re: INI mit Schleife auslesen

  Alt 19. Mär 2009, 14:25
Hallo,

weil Du in der Schleife alle Sections ausliest.
Willst Du nur die Beschreibung einer Section, darfst Du auch nur eine auslesen 8)
In der Schleife liest Du aber explizit alle Sections hintereinander aus.
  Mit Zitat antworten Zitat
Benutzerbild von SoD
SoD

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

Re: INI mit Schleife auslesen

  Alt 19. Mär 2009, 14:36
Wenn ich aber nur eine auslesen möchte, müsste ich das doch per
Delphi-Quellcode:
  case ListBoxFiles.ItemIndex of
    0:
    try
      MemoDesc.Text := VideoIni.ReadString('Video1','Desc','KEINE BESCHREIBUNG VORHANDEN');
      MediaPlayerControl.FileName := VideoIni.ReadString('Video1','Path','');
      MediaPlayerControl.Open;
    except
      error_with_file;
    end;
    1:
    try
      MemoDesc.Text := VideoIni.ReadString('Video2','Desc','KEINE BESCHREIBUNG VORHANDEN');
      MediaPlayerControl.FileName := VideoIni.ReadString('Video2','Path','');
      MediaPlayerControl.Open;
    except
      error_with_file;
    end;
    2:
    try
      MemoDesc.Text := VideoIni.ReadString('Video3','Desc','KEINE BESCHREIBUNG VORHANDEN');
      MediaPlayerControl.FileName := VideoIni.ReadString('Video3','Path','');
      MediaPlayerControl.Open;
    except
      error_with_file;
    end;
  end;
machen und dann ist die Vorgabe nicht erfüllt, nur die INI abzuändern, wenn ein neues Video hinzukommt.

Geht das überhaupt, dass bei Auswahl eines ItemIndex der Listbox automatisch die dazugehörige Beschreibung aus der INI gezogen wird, oder müsste ich das auch wieder in einer StringList speichern?
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.619 Beiträge
 
Delphi 12 Athens
 
#24

Re: INI mit Schleife auslesen

  Alt 19. Mär 2009, 14:38
Wieso sollte das nicht gehen?
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
 
#25

Re: INI mit Schleife auslesen

  Alt 19. Mär 2009, 14:48
Weil dies das erste Mal ist, dass ich mit INIs arbeite und nicht sonderlich viel darüber weiß und auch nicht geübt darin bin. Deswegen bin ich für etwaige blöde Fragen zu entschuldigen.

Aber entweder hab ich nen Denkfehler oder ich kenn die Methode (noch) nicht, das ganze richtig anzusprechen.

Wenn ich nur eine Beschreibung auslesen will, kein Problem, statisch schaff ich das per Code.
Schwierig wird's erst, wenn das ganze automatisch ablaufen soll wie hier, dass eben nur eine Textdatei abgeändert werden soll und damit schon das ganze Programm gefüttert ist.
Keinen Bock anständig zu debuggen?
try stuff;
except ShowMessage('Bug, bug, bug!!! Dont do this shit!');
end;
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#26

Re: INI mit Schleife auslesen

  Alt 19. Mär 2009, 14:56
Hallo,

die Listbox musst Du auch aus der Ini befüllen. Dann ist der erste Eintrag in der Listbox für das erste Video, der 2. für's 2. und wenn Du in die Ini irgendwann mal 99 Videos eingefügt hast, dann hat auch die Listbox 99 Einträge.
Das Klicken auf die Listbox könnte dann eventuell so oder so ähnlich aussehen:
Delphi-Quellcode:
try
  MemoDesc.Text := VideoIni.ReadString('Video' + IntToStr(ListBoxFiles.ItemIndex),'Desc','KEINE BESCHREIBUNG VORHANDEN');
  MediaPlayerControl.FileName := VideoIni.ReadString('Video' + IntToStr(ListBoxFiles.ItemIndex),'Path','');
  MediaPlayerControl.Open;
except
  error_with_file;
end;
Die Listbox-Items könntest Du eventuell mit ini.ReadSections befüllen, sieht dann mit Video1, Video2... nicht so schön aus, Du könntest aber auch die Desc in die Items einfügen, dann siehst Du in der Listbox die Beschreibung.

Um das Ganze nicht zu kompliziert zu machen, nenne das erste Video = Video0, damit Du nicht immer zwischen Itemindex und Namen in der INI-Datei umrechnen musst.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#27

Re: INI mit Schleife auslesen

  Alt 19. Mär 2009, 15:08
Irgendwie erscheint mir das Ganze unnötig kompliziert. Das müsste doch auch einfacher gehen.
Delphi-Quellcode:
//Einlesen der Sektionen
Ini.ReadSections(ListboxFiles.Items);

...

//Einlesen der Konfiguration des aktuellen Videos
if ListBoxFiles.ItemIndex > -1 then
  try
    MemoDesc.Text := VideoIni.ReadString(ListBoxFiles.Items[ListBoxFiles.ItemIndex],'Desc','KEINE BESCHREIBUNG VORHANDEN');
    MediaPlayerControl.FileName := VideoIni.ReadString(ListBoxFiles.Items[ListBoxFiles.ItemIndex],'Path','');
    MediaPlayerControl.Open;
  except
    error_with_file;
  end;
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
 
#28

Re: INI mit Schleife auslesen

  Alt 19. Mär 2009, 15:40
Vielen Dank, nahpets! Der Code funktioniert. Und den einen Eintrag zu viel hab ich noch selber los gekriegt. Einfach i mit 1 Initialisieren, bevor die Schleife losgeht, dann funktioniert es so, wie es soll.

Dein Konstrukt ist mir aber nicht ganz so schlüssig, DeddyH. So wie ich es verstehe, kommt es mir vor, als würde ich bei einer AccessViolation rauskommen, weil ich versuche aus dem Nichts zu lesen? Denn der Pfad steht immer noch in der INI und eine INI-Datei auszulesen funktioniert doch so:MediaPlayerControl.FileName := VideoIni.ReadString({String:Welche Section?},{String:Welcher Wert der Section?},{Default-Wert, wenn es nichts zu lesen gibt}); Korrigier mich falls ich falsch liege, aber ich versteh dein Konstrukt so:
Delphi-Quellcode:
  try
  MemoDesc.Text := VideoIni.ReadString(ListBoxFiles.Items[ListBoxFiles.ItemIndex],'Desc','KEINE BESCHREIBUNG VORHANDEN'); //Lies die Section aus ListBoxFiles.Items (Aber seit wann hat .Items Sections wie eine INI?)
  MediaPlayerControl.FileName := VideoIni.ReadString(ListBoxFiles.Items[ListBoxFiles.ItemIndex],'Path',''); //Lies den Dateipfad aus ListBoxFiles.Items (In der Listbox stehen doch nur die Bezeichnungen der Videodateien und keine Pfade?)
  MediaPlayerControl.Open;
Ich bin natürlich dankbar, für jedes Codebeispiel und ich bemüh mich auch jedes zu verstehen, nur dieses hier ist mir halt bissl zu verwirrend (Worüber ich mich wunder hab ich ja als Kommentar in deinen Code eingefügt). In wie weit ist der einfacher, als der von nahpets? Das würde mich noch sehr interessieren!
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.619 Beiträge
 
Delphi 12 Athens
 
#29

Re: INI mit Schleife auslesen

  Alt 19. Mär 2009, 15:50
In ListboxFiles.Items stehen nach meiner ersten Codezeile die Bezeichner der Sections drin. Den aktuell gewählten Eintrag erhält man über den ItemIndex, kann ihn also direkt im ReadString-Befehl angeben, und nichts anderes mache ich da. Du kannst Dir ja einmal den Inhalt ausgeben lassen, dann wird es vielleicht klarer.
Delphi-Quellcode:
if ListBoxFiles.ItemIndex > -1 then
  try
    ShowMessage(ListBoxFiles.Items[ListBoxFiles.ItemIndex]);
    MemoDesc.Text := VideoIni.ReadString(ListBoxFiles.Items[ListBoxFiles.ItemIndex],'Desc','KEINE BESCHREIBUNG VORHANDEN');
    MediaPlayerControl.FileName := VideoIni.ReadString(ListBoxFiles.Items[ListBoxFiles.ItemIndex],'Path','');
    MediaPlayerControl.Open;
  except
    error_with_file;
  end;
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
Antwort Antwort
Seite 3 von 3     123   


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 09:26 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