Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Division (https://www.delphipraxis.net/102866-division.html)

daredd 6. Nov 2007 11:31


Division
 
Kann mir einer sagen was ich hier bei sowas einfachem falsch mache?

Delphi-Quellcode:
procedure TMainform.Button1Click(Sender: TObject);
var
s, sc : Int64;
begin
     //Button1.Visible := false;
     //InitMetaEx;
     sc := 1024;
     s := DiskFree(0);
     s := (s / sc); // hier kommt die Fehlermeldung
     Label16.Caption := Format('%d', [s]);
end;
Ich bekomme beim Compelieren eine Fehlermeldung:

Incompatible types: Int64 and Extend.

Ich will eigentlich nur die große bytezahl als Megabytezahl bzw. Gb anzeigen lassen.

DeddyH 6. Nov 2007 11:34

Re: Division
 
Der Operator / ist für Fließkommazahlen. Für ganze Zahlen musst Du div verwenden.

Phoenix 6. Nov 2007 11:34

Re: Division
 
Die Meldung sagt doch schon alles aus.
Aus der Division kommt (logischerweise) eine Gleitkommazahl raus (Extended).
Du willst diese Zahl, die Nachkommastellen speichern kann, aber einem Integer - also einem Ganzzahligen Wert zuweisen. Das geht nicht. Wie denn auch?

Du musst also entweder die linke Seite in einen Fließkommawert umwandeln, oder aber das Ergebnis der Division erst runden.

daredd 6. Nov 2007 11:35

Re: Division
 
Ja Mensch wie dumm bin ich eigentlich?
Oh man stimmt. Also ich habe gestern zu lange gearbeitet.

Danke :-D

Die Muhkuh 6. Nov 2007 11:41

Re: Division
 
Das hier wäre auch möglich:

Delphi-Quellcode:
procedure TMainform.Button1Click(Sender: TObject);
var
s, sc : Int64;
begin
     //Button1.Visible := false;
     //InitMetaEx;
     sc := 1024;
     s := DiskFree(0);
     s := Round(s / sc); // Beachte das Round
     Label16.Caption := Format('%d', [s]);
end;

DeddyH 6. Nov 2007 11:52

Re: Division
 
Oder gleich so:
Delphi-Quellcode:
procedure TMainform.Button1Click(Sender: TObject);
var
s, sc : Int64;
begin
     //Button1.Visible := false;
     //InitMetaEx;
     s := DiskFree(0);
     Label16.Caption := Format('%.0f', [s/1024]);
end;

Phoenix 6. Nov 2007 11:55

Re: Division
 
Also mal ehrlich:
Delphi-Quellcode:
procedure TMainform.Button1Click(Sender: TObject);
begin
   Label16.Caption := Format('%.0f', [DiskFree(0)/1024]);
end;
:mrgreen:

DeddyH 6. Nov 2007 12:04

Re: Division
 
Das wäre mein nächster Schritt gewesen :mrgreen:

JasonDX 6. Nov 2007 12:07

Re: Division
 
Nächste Möglichkeit:
Delphi-Quellcode:
procedure TMainform.Button1Click(Sender: TObject);
begin
   Label16.Caption := IntToStr(DiskFree(0) shr 10);
end;
:D

greetz
Mike

Phoenix 6. Nov 2007 12:17

Re: Division
 
Okay, hast gewonnen :angel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:17 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