Forum: Sonstige Fragen zu Delphi
Delphi
by Martin K,
6. Nov 2005
Häääää?????
Das geht sogar:
procedure TForm1.Button1Click(Sender: TObject);
var x: Integer;
begin
x := -7;
Sleep(x);
end;
Forum: Sonstige Fragen zu Delphi
Delphi
by Martin K,
6. Nov 2005
Aber wie soll das denn gehen?
Angenommen SongLength wäre negativ, dann würde doch in Sleep() ein negativer Wert stehen.
Da bringt's doch nix, wenn er den Wert milliseconds : Cardinal in einen Integer-Typ erweitert,
z.B. bei Sleep(-10) hat Delphi trotzdem ein Problem!
Nochmal zur Erinnerung:
procedure Sleep(milliseconds : Cardinal);
Forum: Sonstige Fragen zu Delphi
Delphi
by Martin K,
6. Nov 2005
Cooool, das wusste ich noch gar nicht....
Warum gibt er eigentlich nicht diese Fehlermeldung raus (z.B. für den obigen Quellcode):
Wäre doch viel logischer !
Forum: Sonstige Fragen zu Delphi
Delphi
by Martin K,
6. Nov 2005
Jetzt hab ich's:
Das liegt nicht an der Kombination von SongLength und Position,
sondern an dem Befehl Sleep(), der eine Zahl vom Typ Cardinal erwartet, aber mit SongLength auch einen Integer-Wert enthält.
Wenn dieser nun negativ wäre, dann weiß er nix mit Sleep(milliseconds: Cardinal) anzufangen und gibt eine Fehlermeldung raus.
Im Klartext:
Das funktioniert einwandfrei:procedure...
Forum: Sonstige Fragen zu Delphi
Delphi
by Martin K,
6. Nov 2005
Also ich gehe mal davon aus, dass ich diese Meldung getrost vernachlässigen kann, da SongLength eh immer positiv ist.
Aber mal allgemein zu den beiden Typen Integer und Cardinal:
Eigentlich ist es doch egal, ob mit oder ohne Vorzeichen, da ohne Vorzeichen (Cardinal) ja immer positiv bedeutet.
Also müsste ich doch dann beide Typen ganz normal addieren und subtrahieren können...
Aber warum...
Forum: Sonstige Fragen zu Delphi
Delphi
by Martin K,
6. Nov 2005
Ich glaub ich hab's jetzt:
SongLength : Integer;
Position : Cardinal;
Also kann nur SongLength positive und negative Werte annehmen, vgl. Delphi Hilfe:
Type Range Format
---------------------------------------------------
Integer –2147483648..2147483647 signed 32-bit
Cardinal 0..429496729 unsigned 32-bit
Forum: Sonstige Fragen zu Delphi
Delphi
by Martin K,
6. Nov 2005
Hmmm...
Heißt also, dass einer von beiden ein Vorzeichen hat (+ od. -) und der andere nicht.. Oder was???
Aber seit wann hat denn die Zeit in s ein Vorzeichen, ich kenn keine negative Zeit :wink:
Und wie soll die Position denn ein Vorzeichen haben?
Das ist doch eine Zeitangabe zwischen 0 und SongLength, also auf jeden Fall größer als 0 !!!
Und wie wurden die 'erweitert'?
Ich mein ja...
Forum: Sonstige Fragen zu Delphi
Delphi
by Martin K,
6. Nov 2005
Hi,
ich benutze die Componente TBassdllPlayer und hab diesen Code geschrieben:
Wenn ihr den TBassdllPlayer nicht kennt, macht nix - hab die Erklärung dran geschrieben:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
//Gesamtlänge einer Sounddatei- Aktuelle Position(=verbleibende Zeit in s)*1000 -> in ms
Sleep((BassdllPlayer1.SongLength -...