AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Merkwürdige Fehlermeldung (Compiler)

Merkwürdige Fehlermeldung (Compiler)

Ein Thema von Martin K · begonnen am 6. Nov 2005 · letzter Beitrag vom 7. Nov 2005
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#1

Merkwürdige Fehlermeldung (Compiler)

  Alt 6. Nov 2005, 21:50
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:
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;
Ich will also abfragen, wie lange die Musik noch läuft, und dann das Programm beenden.

Dann kommt aber diese Fehlermeldung:
Zitat:
[Warning] Unit1.pas(XX): Combining signed and unsigned types - widened both operands
Damit kann ich nun leider überhaupt nix anfangen...
Kann mir einer das übersetzen oder sagen, wie ich den Code oben verändern muss, damit die Meldung nicht mehr kommt ?
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#2

Re: Merkwürdige Fehlermeldung (Compiler)

  Alt 6. Nov 2005, 21:54
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.
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Merkwürdige Fehlermeldung (Compiler)

  Alt 6. Nov 2005, 22:01
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
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
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#4

Re: Merkwürdige Fehlermeldung (Compiler)

  Alt 6. Nov 2005, 22:05
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.
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Merkwürdige Fehlermeldung (Compiler)

  Alt 6. Nov 2005, 22:08
Ich glaub ich hab's jetzt:
Delphi-Quellcode:
SongLength : Integer;
Position : Cardinal;
Also kann nur SongLength positive und negative Werte annehmen, vgl. Delphi Hilfe:
Delphi-Quellcode:
Type Range Format
---------------------------------------------------
Integer –2147483648..2147483647 signed 32-bit
Cardinal 0..429496729 unsigned 32-bit
Hier steht's ja alles: Integer signed (- und +), Cardinal unsigned (kein Vorzeichen).

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!)
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Merkwürdige Fehlermeldung (Compiler)

  Alt 6. Nov 2005, 22:17
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 ?
  Mit Zitat antworten Zitat
Benutzerbild von Aenogym
Aenogym

Registriert seit: 7. Mär 2004
Ort: Schwerin
1.089 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Merkwürdige Fehlermeldung (Compiler)

  Alt 6. Nov 2005, 22:21
Zitat von Martin K:
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 ?
ich nutze auch die bass.dll und habe genau dieselbe warnung, wie du
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
Steffen Rieke
Was nicht buzzt, wird buzzend gemacht!
http://blog.base-records.de
http://www.base-records.de
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Merkwürdige Fehlermeldung (Compiler)

  Alt 6. Nov 2005, 22:31
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:
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;
Aber hier gibt's einen Fehler:
Delphi-Quellcode:
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;
Das geht zwar, es gibt aber trotzdem eine Warnmeldung:
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 von Aenogym:
zur not kannst du für die betreffende zeile ja die warnung ausschalten (ging imho mit einem compiler-schalter).
Wie geht das
  Mit Zitat antworten Zitat
Benutzerbild von Aenogym
Aenogym

Registriert seit: 7. Mär 2004
Ort: Schwerin
1.089 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Merkwürdige Fehlermeldung (Compiler)

  Alt 6. Nov 2005, 22:37
Zitat von Martin K:
Wie geht das
so:

Delphi-Quellcode:
{$WARNINGS OFF}
sleep(...);
{$WARNINGS ON}
damit deaktivierst/aktivierst du sämtliche warnungen

aenogym
Steffen Rieke
Was nicht buzzt, wird buzzend gemacht!
http://blog.base-records.de
http://www.base-records.de
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Merkwürdige Fehlermeldung (Compiler)

  Alt 6. Nov 2005, 22:40
Zitat von Aenogym:
Delphi-Quellcode:
{$WARNINGS OFF}
sleep(...);
{$WARNINGS ON}
damit deaktivierst/aktivierst du sämtliche warnungen

aenogym
Cooool, das wusste ich noch gar nicht....

Warum gibt er eigentlich nicht diese Fehlermeldung raus (z.B. für den obigen Quellcode):
Zitat:
[Warning] Unit1.pas(XX): Variable 'x' might be negative
Wäre doch viel logischer !
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 07:17 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