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 2 von 3     12 3      
Benutzerbild von Reinhardtinho
Reinhardtinho

Registriert seit: 26. Feb 2007
411 Beiträge
 
Delphi 5 Enterprise
 
#11

Re: INI mit Schleife auslesen

  Alt 18. Mär 2009, 14:40
Der Aufbau der Ini-Datei ist schon mal falsch:

Zitat von http://de.wikipedia.org/wiki/Initialisierungsdatei:
Jeder Schlüssel darf nur einmal je Sektion vorkommen.
Ich habe viel von meinem Geld für Alkohol, Weiber und schnelle Autos ausgegeben ... Den Rest habe ich einfach verpraßt.

George Best - 22.05.1946 - 25.11.2005 - nordirischer Fußballspieler
  Mit Zitat antworten Zitat
DevilsCamp
(Gast)

n/a Beiträge
 
#12

Re: INI mit Schleife auslesen

  Alt 18. Mär 2009, 14:43
Zitat von SoD:
Nur bekomm ich jetzt "E2010 Inkompatible Typen: 'TStrings' und 'string'" bei

Delphi-Quellcode:
for I := 0 to VideoIni.ReadInteger('Videoindex','Videos',0) - 1 do
    begin
      MemoDesc.Text := VideoIni.ReadSection('Desc','Desc'); //Hier und
      MediaPlayerControl.FileName := VideoIni.ReadSection('Paths','Path'); //Hier meldet Delphi Fehler
      MediaPlayerControl.Open;
    end;
Das sind die Fehler, von denen ich geredet hab. Er kompiliert es mir gar nicht erst, weil auf einmal Typen nicht mehr zusammenpassen.
ReadSection erwartet als zweiten Parameter eine Variable vom Typ TStrings. Also z.B. eine TStringList oder TListBox.Items
  Mit Zitat antworten Zitat
Blackheart

Registriert seit: 4. Mai 2005
846 Beiträge
 
Delphi 7 Enterprise
 
#13

Re: INI mit Schleife auslesen

  Alt 18. Mär 2009, 14:48
Hier mal ein gutes Ini Tutorial
Blackheart
  Mit Zitat antworten Zitat
Benutzerbild von SoD
SoD

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

Re: INI mit Schleife auslesen

  Alt 18. Mär 2009, 14:55
Zitat von Blackheart:
Hier mal ein gutes Ini Tutorial
Das Tutorial hab ich auch gelesen, als ich mit INIs angefangen hab. Das hat mir den Einstieg schon mal sehr erleichtert.

Zitat von DevilsCamp:
ReadSection erwartet als zweiten Parameter eine Variable vom Typ TStrings. Also z.B. eine TStringList oder TListBox.Items
Und wenn ich versuch die ListBox.Items zu übergeben ist es auch wieder falsch.

ListBoxFiles.Items.Add(VideoIni.ReadSection('Name',ListBoxFiles.Items)); Dann heißt es "E2010 Inkompatible Typen: 'string' und 'procedure, untyped pointer or untyped parameter'". Eben wollte er doch nocht TStrings?
  Mit Zitat antworten Zitat
DevilsCamp
(Gast)

n/a Beiträge
 
#15

Re: INI mit Schleife auslesen

  Alt 18. Mär 2009, 15:01
ReadSection ist auch eine Prozedur. Keine Funktion.
Versuch es mal damit:

Delphi-Quellcode:
procedure Test;
var
  i: Integer;
  Sektionen: TStringList;
begin
  Sektionen := TStringList.Create;
  ListBoxFiles.Items.Clear;
  VideoIni.ReadSections(Sektionen); // Alle Sektionsnamen sind nun in Sektionen gespeichert.

  for i := 0 to Sektionen.Count - 1 do
  begin
    ListBoxFiles.Items.Add(VideoIni.ReadString(Sektionen[i], 'Name', Format('Unbekannter Name %d', [i])));
  end;
end;
[add]
Ich beziehe mich auf das INI-File Format aus Post #7
  Mit Zitat antworten Zitat
Blackheart

Registriert seit: 4. Mai 2005
846 Beiträge
 
Delphi 7 Enterprise
 
#16

Re: INI mit Schleife auslesen

  Alt 18. Mär 2009, 15:02
Dann lies mal das Tutorial nochmal dann fällt dir auf was du falsch gemacht hast.
Blackheart
  Mit Zitat antworten Zitat
Benutzerbild von SoD
SoD

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

Re: INI mit Schleife auslesen

  Alt 18. Mär 2009, 15:27
Zitat von DevilsCamp:
ReadSection ist auch eine Prozedur. Keine Funktion.
Versuch es mal damit:

Delphi-Quellcode:
procedure Test;
var
  i: Integer;
  Sektionen: TStringList;
begin
  Sektionen := TStringList.Create;
  ListBoxFiles.Items.Clear;
  VideoIni.ReadSections(Sektionen); // Alle Sektionsnamen sind nun in Sektionen gespeichert.

  for i := 0 to Sektionen.Count - 1 do
  begin
    ListBoxFiles.Items.Add(VideoIni.ReadString(Sektionen[i], 'Name', Format('Unbekannter Name %d', [i])));
  end;
end;
[add]
Ich beziehe mich auf das INI-File Format aus Post #7
Danke, der Code funktioniert schon ganz gut, aber er zeigt mir mehr Einträge an, als in der INI vorhanden sind. Woher kommt denn der 4. Eintrag auf einmal? Schimpft sich "Unbekannter Name 0".

Zitat von Blackheart:
Dann lies mal das Tutorial nochmal dann fällt dir auf was du falsch gemacht hast.
Ich mach öfter was falsch Was genau meinst du denn?
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#18

Re: INI mit Schleife auslesen

  Alt 18. Mär 2009, 15:44
Hallo,

Delphi-Quellcode:
for i := 0 to Sektionen.Count - 1 do
begin
  ListBoxFiles.Items.Add(VideoIni.ReadString(Sektionen[i], 'Name', Format('Unbekannter Name %d', [i])));
end;
Dir fehlt vermutlich auch das letzte Video
Deine Videos sind von 1 bis 3 nummeriert, die For-Schleife geht von 0 bis 2, Du musst also
ListBoxFiles.Items.Add(VideoIni.ReadString(Sektionen[i], 'Name', Format('Unbekannter Name %d', [i]))); durchListBoxFiles.Items.Add(VideoIni.ReadString(Sektionen[i + 1], 'Name', Format('Unbekannter Name %d', [i + 1]))); ersetzen.
Oder nummeriere die Video in der Ini-Datei auch mit 0 beginnend.
  Mit Zitat antworten Zitat
Benutzerbild von SoD
SoD

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

Re: INI mit Schleife auslesen

  Alt 19. Mär 2009, 11:06
OK, ich bin wieder auf das vorherige Schema für die INI zurückgegangen.

Code:
[Videoindex]
videos=3

[Video0]
Path=.\datei0.wmv
Name=Name 0
Desc=Beschreibung 0

[Video1]
Path=.\datei1.wmv
Name=Name 1
Desc=Beschreibung 1

[Video2]
Path=.\datei2.wmv
Name=Name 2
Desc=Beschreibung 2
Er zeigt mir aber dennoch einen Eintrag zu viel an.

Ich hab auch mit dem Konstrukt zum Auslesen der Dateieinträge versucht, die Videobeschreibungen zu laden, aber es kommt immer nur die Beschreibung der allerletzten Section dabei raus. Der Code:

Delphi-Quellcode:
procedure TForm1.ListBoxFilesClick(Sender: TObject);
var
  I: Integer;
  VideoFile : TStringList;
  VideoDesc : TStringList;
begin
  VideoIni := TIniFile.Create(PChar(ExtractFilePath(ParamStr(0)) + 'files.ini'));
  VideoFile := TStringList.Create;
  VideoDesc := TStringList.Create;
  VideoIni.ReadSections(VideoFile);
  VideoIni.ReadSections(VideoDesc);
  for i := 0 to VideoFile.Count -1 do
  begin
    MediaPlayerControl.FileName := VideoIni.ReadString(VideoFile[i],'Path','');
  end;
  for i := 0 to VideoDesc.Count - 1 do
  begin
    MemoDesc.Text := VideoIni.ReadString(VideoDesc[i],'Desc','');
  end;
Scheint so, als müsste ich etwas umformulieren?
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
 
#20

Re: INI mit Schleife auslesen

  Alt 19. Mär 2009, 11:12
Hallo,

na klar, Du überschreibst ja auch immer die Werte.

Statt
Delphi-Quellcode:
for i := 0 to VideoDesc.Count - 1 do
begin
  MemoDesc.Text := VideoIni.ReadString(VideoDesc[i],'Desc','');
end;
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;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 04:03 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