![]() |
Merkwürdige Fehlermeldung (Compiler)
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:
Delphi-Quellcode:
Ich will also abfragen, wie lange die Musik noch läuft, und dann das Programm beenden.
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 - BassdllPlayer1.Position)*1000); end; Dann kommt aber diese Fehlermeldung: Zitat:
Kann mir einer das übersetzen oder sagen, wie ich den Code oben verändern muss, damit die Meldung nicht mehr kommt ? |
Re: Merkwürdige Fehlermeldung (Compiler)
Das Ganze heisst überdeutscht etwa soviel wie:
Ein vorzeichenbehafteter und ein nicht-vorzeichenbehafteter Typ wurden kombiniert. Beide Typen wurden erweitert, .. damits klappt ;) Ich vermute mal, das SongLength ohne Vorzeichen ist und Position mit Vorzeichen. Deshalb die Meldung. |
Re: Merkwürdige Fehlermeldung (Compiler)
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 nur, eigentlich ist es ja egal, da das Programm auch so läuft... aber es ist ja schließlich eine 'Warning', die nehme ich eigentlich immer ernst :angel2: |
Re: Merkwürdige Fehlermeldung (Compiler)
Sag doch mal wie die beiden Variablen deklariert wurden.
Es ist dem Compiler egal, was in den Variablen steht, es geht nur darum, welchen Typ sie haben. |
Re: Merkwürdige Fehlermeldung (Compiler)
Ich glaub ich hab's jetzt:
Delphi-Quellcode:
Also kann nur SongLength positive und negative Werte annehmen, vgl. Delphi Hilfe:
SongLength : Integer;
Position : Cardinal;
Delphi-Quellcode:
Hier steht's ja alles: Integer signed (- und +), Cardinal unsigned (kein Vorzeichen).
Type Range Format
--------------------------------------------------- Integer –2147483648..2147483647 signed 32-bit Cardinal 0..429496729 unsigned 32-bit Aber was hat das jetzt mit meinem Code oben zu tun ?? (ist doch auch ein Schwachsinn, die Länge eines Sounds in Integer anzugeben... Ein Sound kann doch nicht kürzer als 0 sec sein!) |
Re: Merkwürdige Fehlermeldung (Compiler)
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 gibt der Compiler dann eine Fehlermeldung raus ? |
Re: Merkwürdige Fehlermeldung (Compiler)
Zitat:
das klappt ja auch alles. es ist kein fehler. eben nur eine warnung, dass du eine rechenoperation mit zwei verschiedenen typen ausführst. unter umständen könnte das zu problemen führen - in deinem fall aber nicht. zur not kannst du für die betreffende zeile ja die warnung ausschalten (ging imho mit einem compiler-schalter). aenogym |
Re: Merkwürdige Fehlermeldung (Compiler)
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:
Delphi-Quellcode:
Aber hier gibt's einen Fehler:
procedure TForm1.Button1Click(Sender: TObject);
var x, z: Integer; y: Cardinal; begin x :=-7; y := 5; z := x + y; //ergibt also -7 + 5 = -2, bei z vom Typ Integer kein Problem! end;
Delphi-Quellcode:
Das geht zwar, es gibt aber trotzdem eine Warnmeldung:
procedure TForm1.Button1Click(Sender: TObject);
var x: Integer; y, z: Cardinal; begin x :=-7; y := 5; z := x + y; //z =-2, aber ein Cardinal-Typ -> Fehlermeldung end;
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var x: Integer; y, z: Cardinal; begin x := 2; y := 5; z := x + y; //Warnmeldung, da x auch negativ sein könnte end; Zitat:
|
Re: Merkwürdige Fehlermeldung (Compiler)
Zitat:
Delphi-Quellcode:
damit deaktivierst/aktivierst du sämtliche warnungen
{$WARNINGS OFF}
sleep(...); {$WARNINGS ON} aenogym |
Re: Merkwürdige Fehlermeldung (Compiler)
Zitat:
Warum gibt er eigentlich nicht diese Fehlermeldung raus (z.B. für den obigen Quellcode): Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:32 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 by Thomas Breitkreuz