AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Rechnen mit integer, int64, Floattostr, inttostr... - Hilfe
Thema durchsuchen
Ansicht
Themen-Optionen

Rechnen mit integer, int64, Floattostr, inttostr... - Hilfe

Ein Thema von Flodding · begonnen am 4. Mär 2009 · letzter Beitrag vom 4. Mär 2009
Antwort Antwort
Flodding

Registriert seit: 26. Dez 2007
Ort: Kiel
121 Beiträge
 
Turbo Delphi für Win32
 
#1

Rechnen mit integer, int64, Floattostr, inttostr... - Hilfe

  Alt 4. Mär 2009, 10:56
Delphi-Quellcode:
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;
Guten morgen zusammen... in der obenstehenden Funktion wird der Maximale Speicher eines Datenträgers errechnet... dazu auch noch der Freie Platz...
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:

form1.Label1.Caption:=FloatToStr(AProzent); gebe ich stattdessen alle anderen variablen an wie zB. Total, Free, Gesammt,etc dann werden mir alle werte angezeigt...

wer kann helfen?!

ich danke im voraus für jede antwort
Flo
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Rechnen mit integer, int64, Floattostr, inttostr... - Hi

  Alt 4. Mär 2009, 11:07
Prozentrechnen kenne ich auch anders:
AProzent:=(Genutzt * 100) div Gesammt; und aProzent als Fließkommazahl definieren.

und noch ein Edit, dann besser:
AProzent:=(Genutzt * 100) / Gesammt; und Ausgabe mit Format()
  Mit Zitat antworten Zitat
Flodding

Registriert seit: 26. Dez 2007
Ort: Kiel
121 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Rechnen mit integer, int64, Floattostr, inttostr... - Hi

  Alt 4. Mär 2009, 12:29
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:

(AProzent div 100) * 134 somit sollte ich dann die prozent aud die 134px des images haben...

oder ist da irgendwo ein denkfehler?!
Flo
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Rechnen mit integer, int64, Floattostr, inttostr... - Hi

  Alt 4. Mär 2009, 12:58
AProzent div 100 Bei jedem Prozentwert unter 100 kommt da 0 bei heraus.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Flodding

Registriert seit: 26. Dez 2007
Ort: Kiel
121 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Rechnen mit integer, int64, Floattostr, inttostr... - Hi

  Alt 4. Mär 2009, 13:26
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:
Bei jedem Prozentwert unter 100 kommt da 0 bei heraus.
wie soll ich das sonst berechnen?!
Flo
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#6

Re: Rechnen mit integer, int64, Floattostr, inttostr... - Hi

  Alt 4. Mär 2009, 16:17
Zitat von Flodding:

Zitat:
Bei jedem Prozentwert unter 100 kommt da 0 bei heraus.
wie soll ich das sonst berechnen?!
Mit dem Schrägstrich:

AProzent als float definieren und dann:

AProzent:= Genutzt / Gesammt * 100;
form1.Label1.Caption:=FloatToStr(AProzent);
form1.diskusage.Width:= Round(AProzent);

So ähnlich
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Rechnen mit integer, int64, Floattostr, inttostr... - Hi

  Alt 4. Mär 2009, 16:21
3-Satz für Arme
Also unbekannte immer zuerst (beim zusammenstellen des Vergleichs):

Anzeige-Breite zu Maximale Breite entspricht Prozent zu 100%
Code:
??? : W = P : 100   |*W
??? = P * W : 100
=================
x := (P * W) div 100
Beim Arbeiten mit Integer immer Multiplikation vor Division (da Nachkommawerte verloren gehen)

"Rüsselmops" scheint nicht Copyright geschützt?
  Mit Zitat antworten Zitat
Flodding

Registriert seit: 26. Dez 2007
Ort: Kiel
121 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Rechnen mit integer, int64, Floattostr, inttostr... - Hi

  Alt 4. Mär 2009, 19:29
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
Flo
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Rechnen mit integer, int64, Floattostr, inttostr... - Hi

  Alt 4. Mär 2009, 19:36
Ich würde die Zwischenwerte genau als Fliesskommazahlen berechnen und erst später das Ergebnis runden
Markus Kinzler
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#10

Re: Rechnen mit integer, int64, Floattostr, inttostr... - Hi

  Alt 4. Mär 2009, 20:18
Gesamt

Das musste jetzt mal gesagt werden ._.
  Mit Zitat antworten Zitat
Antwort Antwort


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 18:39 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