AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi GetDiscFreeSpacEx mit verschiedenen Laufwerksbuchstaben
Thema durchsuchen
Ansicht
Themen-Optionen

GetDiscFreeSpacEx mit verschiedenen Laufwerksbuchstaben

Ein Thema von g00gle-gott · begonnen am 5. Apr 2009 · letzter Beitrag vom 5. Apr 2009
Antwort Antwort
g00gle-gott
(Gast)

n/a Beiträge
 
#1

GetDiscFreeSpacEx mit verschiedenen Laufwerksbuchstaben

  Alt 5. Apr 2009, 13:11
GetDiscFreeSpacEx mit verschiedenen Laufwerksbuchstaben aufrufen...

hallo an alle,

bin gerade dabei ein Programm zu machen, welches verschiedene PC-spezifische Daten liefert wie zB CPU-geschwindigkeit, Arbeitsspeicher oder eben auch Festplattenspeicher.
Hier liegt jedoch mein Problem, dass ich es nicht hinbekomme, die Funktion GetDiscFreeSpaceEx mit unterschiedlichen Laufwerksbuchstaben aufzurufen (je nach inhalts eines editfeldes).

hier mein bisheriger Lösungsansatz:

Delphi-Quellcode:
procedure TForm1.Button8Click(Sender: TObject);
var
  freeCaller,
  total: Int64;
  Laufwerksbuchstabe : char;
  zeiger : pchar;
  x : array [0..255] of char;
begin
  Laufwerksbuchstabe:=edit2.Text[1];
  zeiger:=x;
  zeiger[1]:=Laufwerksbuchstabe;
  zeiger[2]:=':';
  zeiger[3]:='\';
  zeiger[4]:=#0;
  GetDiskFreeSpaceEx((Zeiger), freeCaller, total, nil)
  showmessage('Freier Speicher: '+IntToStr(((freeCaller div 1024)div 1024)div 1024)+' Gigabytes');
  showmessage('Gesamter Speicher: '+(IntToStr(((total div 1024)div 1024)div 1024)+' Gigabytes'));
end;
das war bisher die einzige Lösung, die Funktioniert hat bzw sich kompilieren ließ, ABER: wenn ich dann im Programm entsprechenden Button klicke liefert mir die Funktion als ausgabe nur müll! ...

kann mir jemand weiterhelfen
1.wie ich das sauberer lösen kann (ohne array of char und 3 Variabeln!) und
2.wie ich es richtig zum laufen bekomme mit vernünftigen ausgabewerten

vielen dank im Vorraus und

Grüße Ändy
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.345 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: GetDiscFreeSpacEx mit verschiedenen Laufwerksbuchstaben

  Alt 5. Apr 2009, 13:14
Hier ists zwar auch überhaupt nicht schön geschrieben, funktioniert aber:
http://www.swissdelphicenter.ch/torr...ode.php?id=654

// EDIT:
Und wie wäre es so:
Delphi-Quellcode:
procedure TfrmMain.Button1Click(Sender: TObject);

  function GetFreeSpace(DriveLetter: Char; var TotalSpace: Int64): Int64;
  begin
    GetDiskFreeSpaceEx(PChar(DriveLetter + ':\'), Result, TotalSpace, nil);
  end;

var
  FreeSpace, Total: Int64;
begin
  FreeSpace := GetFreeSpace('c', Total);
  ShowMessage('Freier Speicher: ' + IntToStr(FreeSpace div 1073741824) +' Gibibyte');
  ShowMessage('Gesamter Speicher: ' + IntToStr(Total div 1073741824) + ' Gibibyte');
end;
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#3

Re: GetDiscFreeSpacEx mit verschiedenen Laufwerksbuchstaben

  Alt 5. Apr 2009, 13:36
Zitat von jaenicke:
Hier ists zwar auch überhaupt nicht schön geschrieben, funktioniert aber:
die ersten 4 zeilen (füllen des Arrays) lässt sich auch in einer machen:

  strPCopy(RootPath,drive+':\'); hängt PChar auch das #0 ran?

Gruß Frank
  Mit Zitat antworten Zitat
g00gle-gott
(Gast)

n/a Beiträge
 
#4

Re: GetDiscFreeSpacEx mit verschiedenen Laufwerksbuchstaben

  Alt 5. Apr 2009, 16:43
hallo,

@jaenicke
hab es anhand deiner 2. Lösung folgendermaßen realisiert:
nur hier die Zeile etwas editiert um laufwerksbuchstaben zu wählen:

  FreeSpace := GetFreeSpace(edit2.text[1], Total); vielen dank für die schnelle Hilfe
Gruß Ändy
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.345 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: GetDiscFreeSpacEx mit verschiedenen Laufwerksbuchstaben

  Alt 5. Apr 2009, 19:28
Zitat von _frank_:
hängt PChar auch das #0 ran?
Delphi-Strings enthalten auch ein Nullzeichen, allerdings nicht ale letztes Zeichen sondern als Zeichen dahinter. Genau wie die Längenangabe 4 Byte vor dem Start des Strings und dem Referenzzähler nochmal 4 Byte davor ist das nur nicht direkt für den Programmierer sichtbar, macht aber die Verwendung als PChar einfach.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  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 20:55 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