![]() |
Letzte gespeicherte Nr laden
Hallo zusammen
ich habe einen etwas anderen Mediaplayer programmiert. Also er funktioniert so: Man kann einen Listennamen, den Songnamen und dan Pfad speichern(ini). Dann kann man einfach den Listenamen und die SongNr eingeben und es wird das Lied abgespielt. Er kann(bis der Aufbau des Progs funktioniert) nur Wave abspielen. Jetzt möchte ich, dass die gespeicherten Songnamen in einer Listbox angezeigt werden. Dafür brauche ich bei jeder Liste die höchste songnummer. Dazu verwende ich eine Variable LastNr, die ich in der gleichen Sektion speichere. Beim Anzeigen der Liste aber ist dieser Wert immer Null, obwohl ich 2 Songs gespeichert habe. So sieht der Code aus:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var i : Integer; begin ini := TIniFile.Create ('c:\Media1.ini'); try LastNr := ini.ReadInteger(Liste, 'LastNr', 0); Edit5.Text := intToStr(LastNr); for i := 0 to LastNr do begin Name := ini.ReadString(Liste,IntToSTr(i), ''); Sleep(100); ListBox1.Items.Add(Name); end; finally ini.Free end; end; procedure TForm1.FormCreate(Sender: TObject); begin LastNr := 0; Nr := 1; ini := TIniFile.Create('c:\media1.ini'); try Liste := ini.ReadString('LastListe', 'Liste', '1') finally ini.Free end; end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin ini := TIniFile.Create('c:\media1.ini'); try ini.WriteString('LastListe', 'Liste', Liste); finally ini.Free end; end; procedure TForm1.OButton1Click(Sender: TObject); begin ini := TIniFile.Create ('c:\Media1.ini'); try Name := ini.ReadString(Liste,IntToStr(Nr), ''); Pfad := ini.ReadString(Liste, 'Pfad','' ) finally ini.Free end; PlaySound(PAnsiChar(Pfad +Name + '.wav'), 0, SND_ASYNC); end; procedure TForm1.Button1Click(Sender: TObject); begin ini := TIniFile.Create ('c:\Media1.ini'); try Nr := StrToInt(Edit2.Text); LastNr := ini.ReadInteger(Liste, 'LastNr', 0) ; if Nr > LastNr then ini.WriteInteger(Liste, 'LastNr',LastNr); Liste := Edit1.Text; ini.WriteString(Liste,IntToStr(NR),Edit3.Text); // Songname ini.WriteString(Liste, 'Pfad', Edit4.Text); finally ini.Free end; end; Noch ein Teil der Ini: [Matrix] 1=Matrix 2=Matrix2 Pfad=C:\Dokumente und Einstellungen\Marcel\Eigene Dateien\Eigene Musik\The Matrix\ LastNr=0 Kann mir jemand helfen? Ich danke für jede Hilfe! Mit freundlichen Grüsse Marcel |
Re: Letzte gespeicherte Nr laden
Hi Marcel,
es ist nicht sonderlich gut, eine Varieble namens Name zu haben, da unter Umständen auf Form.Name zugegriffen werden könnte. Ich sehe beim Überfliegen einen möglichen Fehler und zwar hier:
Delphi-Quellcode:
Wenn die aktuelle Nummer größer ist als LastNr, aktualisierst du den Wert in der Ini, den du 2 Zeilen später jedoch wieder (in dem Fall mit dem gleichen Wert) überschreibst. In deiner Ini steht also generell der Wert von LastNr, da diese Zeile immer aufgerufen wird:
LastNr := ini.ReadInteger(Liste, 'LastNr', 0) ;
if Nr > LastNr then ini.WriteInteger(Liste, 'LastNr', LastNr); Liste := Edit1.Text; ini.WriteInteger(Liste, 'LastNr', LastNr);
Delphi-Quellcode:
Ist das so gewollt?
ini.WriteInteger(Liste, 'LastNr', LastNr);
Wäre es nicht auch sinnvoller, den Ini-Inhalt einzulesen und damit zu arbeiten, als ständig die Datei zu öffnen und zu schließen? Ich verstehe nicht ganz, wofür du Sleep aufrufst, aber falls du das brauchst, nutze lieber ![]() |
Re: Letzte gespeicherte Nr laden
Hallo Matze
Ja das wäre schon besser, ich weiss aber nicht wie ich das anstellen soll. Hat jemand da eine Idee? Ich hab den falschen Code abgeändert. Aber es funktioniert immer noch nicht. Mit Freundlichen Grüssen Marcel |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:38 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