Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Speichergröße von Datenträgern auslesen (https://www.delphipraxis.net/113984-speichergroesse-von-datentraegern-auslesen.html)

mind87 17. Mai 2008 20:01


Speichergröße von Datenträgern auslesen
 
Hallo,

habe eine Frage zum auslesen der Speichergröße von Datenträgern. Habe bereits eine Bespiel Code gefunden.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  freeSpace, totalSpace: Double;
  s: Char;
begin
  // Drive letter
  // Laufwerksbuchstabe
  s := 'D';

  freeSpace := DiskFree(Ord(s) - 64);
  totalSpace := DiskSize(Ord(s) - 64);

  label1.Caption := Format('Free Space: %12.0n', [freeSpace]);
  Label2.Caption := Format('Total Space: %12.0n', [totalSpace]);
  Label3.Caption := IntToStr(Round((totalSpace - freeSpace) / totalSpace * 100)) +
    ' Percent used.';
end;
Meine Frage ist nun welche Rolle hier "(Ord(s) - 64" spielt? Kann man dies nicht anders lösen? Bsp: intostr oder ähnlichem?

Gruß

Edit: Würde gerne die Werte ohne z.B 'Free Space: 159.165.487.457' im Label Feld ausgegeben.

Nehme ich das
Format('Free Space: %12.0n', [freeSpace])
raus und ersetze dies durch
label1.Caption :=freeSpace;
erhalte ich vom Compiler die Meldung: "Inkompatible Typen: 'String and Double"

RWarnecke 17. Mai 2008 20:06

Re: Speichergröße von Datenträgern auslesen
 
Du musst den Laufwerksbuchstaben als Type Byte übergeben. Deshalb wird hier die Funktion Ord angewendet.

mkinzler 17. Mai 2008 20:07

Re: Speichergröße von Datenträgern auslesen
 
Ord() ermittelt den ASCII-Code eines Zeichens, 65 ist der Code für 'a'. Ord(s) - 64 ergibt also die Nummer des Buchstabens (1 für 'a')

mind87 17. Mai 2008 20:19

Re: Speichergröße von Datenträgern auslesen
 
Zitat:

Zitat von mkinzler
Ord() ermittelt den ASCII-Code eines Zeichens, 65 ist der Code für 'a'. Ord(s) - 64 ergibt also die Nummer des Buchstabens (1 für 'a')

Welche Rolle spielt nun das die Nummer des Buchstabens a = 1 und nicht bei 65 belassen wird? Sorry wenn ich solche Fragen stelle, bin noch ein Neuling.

mind87 17. Mai 2008 20:27

Re: Speichergröße von Datenträgern auslesen
 
Hat jemand noch eine Idee wie ich das Problem mit meiner Formatierung beseitgen kann?

mkinzler 17. Mai 2008 20:27

Re: Speichergröße von Datenträgern auslesen
 
DiskFree() erwartet 1 für Laufwerk a: und nicht 65

mind87 17. Mai 2008 20:29

Re: Speichergröße von Datenträgern auslesen
 
Zitat:

Zitat von mkinzler
DiskFree() erwartet 1 für Laufwerk a: und nicht 65

Ah jetzt ok Danke dir.

Luckie 17. Mai 2008 20:30

Re: Speichergröße von Datenträgern auslesen
 
Warum liefern deine Funktionen eigentlich keine Ganzzahl zurück, sondern einen Wert vom Typ Double? Gibt es auch halbe und viertel Bytes?

mkinzler 17. Mai 2008 20:32

Re: Speichergröße von Datenträgern auslesen
 
Zitat:

Edit: Würde gerne die Werte ohne z.B 'Free Space: 159.165.487.457' im Label Feld ausgegeben.
Delphi-Quellcode:
label1.Caption := Format('%12.0n', [freeSpace]);

mind87 17. Mai 2008 20:32

Re: Speichergröße von Datenträgern auslesen
 
Zitat:

Zitat von Luckie
Warum liefern deine Funktionen eigentlich keine Ganzzahl zurück, sondern einen Wert vom Typ Double? Gibt es auch halbe und viertel Bytes?

Wollte die genaue Speichergröße haben, nichts gerundetes.


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