Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi DIV und MOD (https://www.delphipraxis.net/36772-div-und-mod.html)

icke 25. Dez 2004 14:04


DIV und MOD
 
Hallo
Ich kann die DIV und MOD Befehle nicht verwenden! Ich hab Delphi 3
Code:
restmin:=FloatToStr(Gesamt)div 60;
restsec:=FloatToStr(Gesamt)mod 60;
Fehler: Inkompatible Typen: 'String' und 'Integer'.

Danke im Vorraus

mirage228 25. Dez 2004 14:09

Re: DIV und MOD
 
Hi,

natürlich kannst Du das nicht!

Der Ausdruck:
Delphi-Quellcode:
FloatToStr(Gesamt)
gibt einen String zurück. Auf diesen kannst Du den Divisions bzw. den Modulo Operator nicht anwenden.

Du müsstest das z.B. so schreiben
Delphi-Quellcode:
FloatToStr(Gesamt div 60) // oder mod 60
mfG
mirage228

Dax 25. Dez 2004 14:10

Re: DIV und MOD
 
Erstens: Delphi-Referenz durchsuchendiv und Delphi-Referenz durchsuchenmod sind Integer-Befehle, können also nur mit Integer-TYpen etwas anfange.

Zweitens: Delphi-Referenz durchsuchenFloatToStr gibt einen String zurück, mit Strings kannst du nicht rechen.

Drittens: In der OH sind nette Beispiele, und kuck mal nach Delphi-Referenz durchsuchenDivMod ;)

Sharky 25. Dez 2004 15:04

Re: DIV und MOD
 
Zitat:

Zitat von Dax
..., und kuck mal nach Delphi-Referenz durchsuchenDivMod ;)

Wobei bei Delphi-Referenz durchsuchenDivMod auf die Grenzen zu achten sind (16Bit Integer);

Dax 25. Dez 2004 15:14

Re: DIV und MOD
 
Alternativ das hier benutzen ;)

Delphi-Quellcode:
procedure DivModEx(Dividend, Divisor: Integer; var Result, Remainder: Integer); overload;
begin
  Result := Dividend div Divisor;
  Remainder := Dividend mod Divisor;
end;

procedure DivModEx(Dividend, Divisor: Extended; var Result, Remainder: Extended); overload;
var Temp: Extended;
begin
  Temp := Dividend / Divisor;
  Result := Int(Temp);
  Remainder := Frac(Temp) * Divisor;
end;

icke 25. Dez 2004 18:22

Re: DIV und MOD
 
1. Wo finde ich die Hilfe DivMod??
2. ich habe die Variabeln 'restmin' und 'restsec' auf integer gesetzt.

--> Fehler: Inkompatible Typen: 'String' und 'Integer'

Kann mir jemand auf normalem Deutsch (-> kein Fachchinesisch) erklären, warum es nicht funktioniert und den Weg zur Lösung bitte erklären??

Danke

MathiasSimmack 25. Dez 2004 18:29

Re: DIV und MOD
 
Zitat:

Zitat von icke
1. Wo finde ich die Hilfe DivMod??

Den Befehl findest du evtl. in der Delphi-Hilfe. Aber ob schon bei Delphi 3?

Zitat:

2. ich habe die Variabeln 'restmin' und 'restsec' auf integer gesetzt.

--> Fehler: Inkompatible Typen: 'String' und 'Integer'

Kann mir jemand auf normalem Deutsch (-> kein Fachchinesisch) erklären, warum es nicht funktioniert und den Weg zur Lösung bitte erklären??
Hat mirage doch weiter oben schon getan.

Sharky 25. Dez 2004 18:36

Re: DIV und MOD
 
Mirage hat es doch eigentlich gut erklärt. Aber ich versuche es nocheinmal auf einem anderen Weg ;-)

Delphi-Quellcode:
var
  str_restmin : String;
  str_restsec : String;
  int_restmin : Integer;
  int_restsec : Integer;
begin
  str_restmin := FloatToStr(Gesamt);
  int_restmin := str_restmin DIV 60; // Diese beiden Zeilen entsprechen: restmin := FloatToStr(gesamt) DIV 60

  str_restsec := FloatToStr(Gesamt);
  int_restsec := str_restmin MOD 60;

end;
Dies ist genau das was Du in deinem ersten Posting geschrieben hast. Nur das ich noch Hilfsvariabeln einfüge.
Wie Du siehst liefert FloatToStr() als Ergebniss einen String. Und diesen Versuchst Du zu dividieren was natürlich nicht gehen kann!

icke 25. Dez 2004 18:37

Re: DIV und MOD
 
Danke für deine Antwort

Ich habe jetzt diesen Ausdruck eingegeben!

Code:
restmin:=FloatToStr(Gesamt div 60);
restsec:=FloatToStr(Gesamt mod 60);
Der Fehler: Operator ist auf diesen Operatortyp nicht anwendbar

Die Hilfe von Delphi 3 sagt:
Zitat:

st der Typ eines Operanden ein Teilbereich eines ordinalen Typs, wird der Operand behandelt, als ob er von einem ordinalen Typ wäre.
Sind beide Operanden der Operatoren +, -, *, div oder mod von einem Integer-Typ, ist der Typ des Ergebnisses der gemeinsame Typ der beiden Operanden. Eine Definition gemeinsamer Typen finden unter Gemeinsamer Typen.
Ist der Operand des positiven oder negativen Vorzeichens von einem Integer-Typ, ist das Ergebnis vom selben Integer-Typ. Ist der Operator von einem Real-Typ, ist der Ergebnistyp Extended.

Der Wert von X/Y ist unabhängig vom Typ der Operanden immer vom Typ Extended. Falls Y den Wert 0 hat, tritt ein Laufzeitfehler auf.
Der Wert von I div J ist der abgerundete mathematische Quotient von I/J. Falls J den Wert 0 hat, tritt ein Laufzeitfehler auf.
Der Operator mod gibt den Rest zurück, der sich aus der Division der beiden Operanden ergibt:

I mod J = I - (I div J) * J

Das Ergebnis von mod hat dasselbe Vorzeichen wie I. Hat J den Wert 0, tritt ein Laufzeitfehler auf.

Sharky 25. Dez 2004 18:41

Re: DIV und MOD
 
Zitat:

Zitat von icke
...Der Fehler: Operator ist auf diesen Operatortyp nicht anwendbar...

Wie hast Du denn die Variable gesamt deklariert?


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:26 Uhr.
Seite 1 von 3  1 23      

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