Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Letzte gespeicherte Nr laden (https://www.delphipraxis.net/92110-letzte-gespeicherte-nr-laden.html)

Marcel_Mars 14. Mai 2007 17:58


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

Matze 14. Mai 2007 18:17

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:
LastNr := ini.ReadInteger(Liste, 'LastNr', 0) ;

if Nr > LastNr then
  ini.WriteInteger(Liste, 'LastNr', LastNr);
Liste := Edit1.Text;

ini.WriteInteger(Liste, 'LastNr', LastNr);
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:

Delphi-Quellcode:
ini.WriteInteger(Liste, 'LastNr', LastNr);
Ist das so gewollt?

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 DelayDelay, damit deine Anwendung nicht ständig eingefroren ist.

Marcel_Mars 15. Mai 2007 14:53

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 19:56 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