PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Update Problem


Lord Nikon
2003-06-13, 23:14:17
Hi ,

void laden()
{
mp->FileName="f:\\mp3\\"+txtfile->Text;
mp->Open();
id=mp->DeviceID;
mp->TimeFormat = tfMilliseconds;
lange=mp->TrackLength[id];
lange=lange/1000;
txtlange->Text=lange;
double p1=0.0;
mp->Play();
int x=0;
while(x==0)
{
if(p1<lange)
{
// position=mp->Position;
// position=position/1000;
p1=mp->Position;
p1=p1/1000.0;
txtposition->Text=p1;
// ShowMessage(p1);
}
else
{
x=1;
}

}

}

Kann mir jemand erklären, warum das Programm immer erstmal am Ende des geladenes Lieder die aktueller Position einträgt.Der dürfte doch eigentlich nach dem Durchgang die aktuelle Position eintragen. Woran liegt das , dass die Methode das nicht tut?

Demirug
2003-06-13, 23:23:39
Klasisches GUI Problem.

Ich nehme mal an das die Laden Methode durch einen Buttonklick oder ähnliches aufgerufen wird. In solchen fällen wird die UI nicht aktualisiert bis die Funktion komplett ausgeführt wurde.

Man kann das aktualisieren auch erzwingen aber das ist in der Regel kein guter Still.

Im Falle einer MP3 Player anwendung sollte man folgendes tun.

Nach dem Laden und starten des abspielens sollte man einen Timer aktivieren und in der Timerfunktion die Position aktualisieren.

Lord Nikon
2003-06-13, 23:36:16
Also wenn ich die Fenstermeldung rausgebe aktualisiert sich das Feld richtig.Ich versuch jetzt , wie du gesagt , mal das ganze mit einem Timer.
EDIT:
Mit der Timer Lösung klappt alles einwandfrei.Auf die Idee einen Timer einzusetzen wäre ich nicht auf Anhieb gekommen.Vielen dank Demirug