AGB  ·  Datenschutz  ·  Impressum  







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

Letzte gespeicherte Nr laden

Ein Thema von Marcel_Mars · begonnen am 14. Mai 2007 · letzter Beitrag vom 15. Mai 2007
Antwort Antwort
Marcel_Mars
(Gast)

n/a Beiträge
 
#1

Letzte gespeicherte Nr laden

  Alt 14. Mai 2007, 18:58
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
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Letzte gespeicherte Nr laden

  Alt 14. Mai 2007, 19:17
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:

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.
  Mit Zitat antworten Zitat
Marcel_Mars
(Gast)

n/a Beiträge
 
#3

Re: Letzte gespeicherte Nr laden

  Alt 15. Mai 2007, 15:53
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
  Mit Zitat antworten Zitat
Antwort Antwort


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 18:15 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