![]() |
Rechnen mit integer, int64, Floattostr, inttostr... - Hilfe
Delphi-Quellcode:
Guten morgen zusammen... in der obenstehenden Funktion wird der Maximale Speicher eines Datenträgers errechnet... dazu auch noch der Freie Platz...
procedure ShowMeTheSpace(c: String);
var Total, Free, dummy: int64; Genutzt:integer; Gesammt:integer; Frei:integer; AProzent:int64; begin if GetDiskFreeSpaceEx(PChar('.\'),dummy,Total,@Free) then begin form1.Label1.Caption:=(Format(' Frei:%.1fGB / Ges.:%.1fGB', [Free / 1024 / 1024 / 1024, Total / 1024 / 1024 / 1024])); Genutzt:=(Total div 1024 div 1024 div 1024) - (Free div 1024 div 1024 div 1024); Gesammt:=(Total div 1024 div 1024 div 1024); Frei:=(Free div 1024 div 1024 div 1024); AProzent:=Genutzt div Gesammt * 100; form1.Label1.Caption:=FloatToStr(AProzent); //Prozent:=Prozent div 100 * 134; //form1.diskusage.Width:= AProzent; end; end; ich hab mir jetzt dazugebaut dass er mir auch sagt wie viel benutzt wird an platz... soweit funktioniert es auch... aber an folgender Stelle bekomme ich keine ausgabe mehr:
Delphi-Quellcode:
gebe ich stattdessen alle anderen variablen an wie zB. Total, Free, Gesammt,etc dann werden mir alle werte angezeigt...
form1.Label1.Caption:=FloatToStr(AProzent);
wer kann helfen?! ich danke im voraus für jede antwort :) |
Re: Rechnen mit integer, int64, Floattostr, inttostr... - Hi
Prozentrechnen kenne ich auch anders:
Delphi-Quellcode:
und aProzent als Fließkommazahl definieren.
AProzent:=(Genutzt * 100) div Gesammt;
und noch ein Edit, dann besser:
Delphi-Quellcode:
und Ausgabe mit Format()
AProzent:=(Genutzt * 100) / Gesammt;
|
Re: Rechnen mit integer, int64, Floattostr, inttostr... - Hi
Also... ich habe ein Label und ein image übereinander... das image ist ein "laufbalken, der mittels kleiner grafik in rot anzeigt wie viel speicher BENUTZT ist... das image ist 2px breit.
das label ist 134px breit und breiter darf auch das darunterliegende image nicht werden... in der variable "Gesammt" steht die komplette des datenträgers... in genutzt steht logischerweise der platz der schon belegt ist auf dem datenträger... in frei steht der freie speicherplatz des datenträgers... AProzent soll die prozentzahl sein die der benutzte speicher von der gesammten größe des datenträgers nutzt... demnach sollte nach dem dreisatz meine rechnung wie folgt aussehen:
Delphi-Quellcode:
somit sollte ich dann die prozent aud die 134px des images haben...
(AProzent div 100) * 134
oder ist da irgendwo ein denkfehler?! |
Re: Rechnen mit integer, int64, Floattostr, inttostr... - Hi
Delphi-Quellcode:
Bei jedem Prozentwert unter 100 kommt da 0 bei heraus.
AProzent div 100
|
Re: Rechnen mit integer, int64, Floattostr, inttostr... - Hi
ich habe mir jetzt extra die formel zur prozentrechnung besorgt^^
W = Prozentwert -> Breite des Image nach der Berechnung G = Grundwert -> gewünschte maximale Breite des Images -> 229px (hab umgebaut^^) p = Prozentsatz -> Prozentwert der den bereits verbrauchten Speicher angibt 100 = 100% -> ja 100% halt... W = G * (p / 100) demnach muss ich rechnen: image1.width = 229 * (AProzent / 100) das müsste mir doch demnach die Breite des Image liefern oder sehe ich das falsch... Zitat:
|
Re: Rechnen mit integer, int64, Floattostr, inttostr... - Hi
Zitat:
AProzent als float definieren und dann: AProzent:= Genutzt / Gesammt * 100; form1.Label1.Caption:=FloatToStr(AProzent); form1.diskusage.Width:= Round(AProzent); So ähnlich :stupid: |
Re: Rechnen mit integer, int64, Floattostr, inttostr... - Hi
3-Satz für Arme
Also unbekannte immer zuerst (beim zusammenstellen des Vergleichs): Anzeige-Breite zu Maximale Breite entspricht Prozent zu 100%
Code:
Beim Arbeiten mit Integer immer Multiplikation vor Division (da Nachkommawerte verloren gehen)
??? : W = P : 100 |*W
??? = P * W : 100 ================= x := (P * W) div 100 "Rüsselmops" ;-) scheint nicht Copyright geschützt? |
Re: Rechnen mit integer, int64, Floattostr, inttostr... - Hi
habs eben grade mal ausprobiert nochmal... funktioniert immernoch nicht richtig... bei meiner festplatte 200Gb scheint es zu funktionieren...
bei einem datenträger mit 8Gb gibt er mir immer nur für AProzent = 6. ich habs jetzt mit einer statusbar gemacht... breite kann ich ja angeben wie ich will, maxvalue=Gesammt, position=genutzt, das ganze dann smooth und in rot... dahinter ne grüne leiste die 100% hat und jetzt schauts zwar nicht so schön aus wie mit meinen beiden images, aber dafür funktioniert es :) danke trotzdem nochmal :D |
Re: Rechnen mit integer, int64, Floattostr, inttostr... - Hi
Ich würde die Zwischenwerte genau als Fliesskommazahlen berechnen und erst später das Ergebnis runden
|
Re: Rechnen mit integer, int64, Floattostr, inttostr... - Hi
Gesamt
Das musste jetzt mal gesagt werden ._. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:06 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-2025 by Thomas Breitkreuz