Entwickler-Ecke

Sonstiges (Delphi) - Real-Wert in Integer umwandeln


|TF|Alucard - Mo 12.04.04 19:08
Titel: Real-Wert in Integer umwandeln
Hi,
wie kann ich einen Real-Wert in Integer umwandeln?

mfg |TF|Alucard


Raphael O. - Mo 12.04.04 19:21


Delphi-Quelltext
1:
2:
round(realvar);
trunc(realvar);

(dabei wird gerundet... die nachkommastellen kann man natürlich nicht "mitnehmen")


|TF|Alucard - Mo 12.04.04 21:11

Vielen Dank. Aber was bedeutet 'trunc'?

mfg |TF|Alucard


Raphael O. - Mo 12.04.04 21:24

trunc schneidet die nachkommastellen ab (abrunden quasi)


Delete - Mo 12.04.04 22:10

|TF|Alucard hat folgendes geschrieben:
Vielen Dank. Aber was bedeutet 'trunc'?

*hüstel* Einmal mit der Maus drauf klicken, dann F1 und lesen was die Delphi-Hilfe so schreibt ...


|TF|Alucard - Mo 12.04.04 22:50

Entschuldigung, ABER Delphi zeigt da bei mir in der Hilfe nichts an bei 'tunc' :roll: (ich habe Delphi 5)

|TF|Alucard


|TF|Alucard - Mo 12.04.04 23:10

Also ich möchte die Menge des freien Speichers einer Festplatte mit Progressbar anzeigen. Aber warum funktioniert es nicht?

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
var freeCaller, total, wert, ins : Int64;
begin
GetDiskFreeSpaceEx('d:\', freeCaller, total, nil);
ins:= total * 100;
Round(ins: Extended): Int64; {Hier wird der Fehler angezeigt}
wert:= ins / freeCaller;
progressbar1.position:= wert;
end;

:?: :?: :?:

Delphi-Hilfe
Zitat:

function Round(X: Extended): Int64;

Beschreibung

Round rundet einen Wert des Typ Real auf einen Integer-Wert.

X ist ein Ausdruck des Typs Real. Zurückgegeben wird ein Int64-Wert mit dem auf die nächste ganze Zahl gerundeten Wert von X. Liegt X genau in der Mitte zwischen zwei ganzen Zahlen, wird immer die gerade Zahl zurückgeliefert.

Liegt der gerundete Wert von X außerhalb des Int64-Wertebereichs, wird ein Laufzeitfehler ausgelöst, der mit einer EInvalidOp-Exception behandelt werden kann.


|TF|Alucard


Raphael O. - Mo 12.04.04 23:27

round wird wie jede andere Funktion auch so aufgerufen: :D

Delphi-Quelltext
1:
round(parameter);                    

parameter ist in deinem Fall ins vom Typ extended (bzw real was du als gleich ansehen kannst) und gibt einen integerwert zurück...
in deinem fall solltest du es so aufrufen

Delphi-Quelltext
1:
wert:=round(ins/freecaller);                    


|TF|Alucard - Mo 12.04.04 23:38

Vielen Dank. Es funktioniert. :D

mfG |TF|Alucard


Delete - Di 13.04.04 15:34

|TF|Alucard hat folgendes geschrieben:
Entschuldigung, ABER Delphi zeigt da bei mir in der Hilfe nichts an bei 'tunc' :roll: (ich habe Delphi 5)

Nun ja, die Delphi Hilfe ist schon recht klever, nur eine automatische Rechtschreibkorrektur hat sie noch nicht. Es heißt trunc.


|TF|Alucard - Di 13.04.04 17:08

Oh, das 'r' hab ich wohl überlesen :oops: ; auf jeden Fall der Befehl 'round' funktioniert einwandfrei.

mfG |TF|Alucard