AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Freier-/Belegter Speicher von Laufwerken
Thema durchsuchen
Ansicht
Themen-Optionen

Freier-/Belegter Speicher von Laufwerken

Ein Thema von Tonki · begonnen am 5. Okt 2006 · letzter Beitrag vom 5. Okt 2006
Antwort Antwort
Tonki

Registriert seit: 18. Sep 2006
10 Beiträge
 
Turbo Delphi für Win32
 
#1

Freier-/Belegter Speicher von Laufwerken

  Alt 5. Okt 2006, 19:36
hallo zusammen!

wie der titel schon sagt würd ich gern ein programm bauen was mir den freien und belegten speicher eines laufwerks anzeigt
hab natürlich erst mal in der code library nachgeschaut und bin fündig geworden (Link zur Library)!
nun hab ich 2 probleme *grübl*

1.
hab das programm erstmal klein gebaut (was ich damit meine kommt bei frage 2 ). also die funktion auf einen button gelegt der mir von Laufwerk C (bootpartition) den speicher anzeigen soll! es kommen da zahlreiche fehlermeldungen das so ziemlich alle befehle nicht deklariert sind, die beim button stehn... nun weiss ich leider nicht wie ich sie deklarieren soll... also als was?
hier mein bisheriger code:
Delphi-Quellcode:
unit SpeicherCheck;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm2 = class(TForm)
    RadioButton1: TRadioButton;
    Button1: TButton;
    RadioButton2: TRadioButton;
    RadioButton3: TRadioButton;
    
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}
procedure Button1Click(Sender: TObject);
function DiskInfo(dir: String; var total, avail: Int64): Boolean;
begin
  dir := IncludeTrailingPathDelimiter(ExtractFilePath(dir));
  Result := GetDiskFreeSpaceEx(PChar(dir), avail, total, nil);
end;

var
  TotalSpace, AvailSpace: Int64;

procedure TForm2.Button1Click(Sender: TObject);
begin
  DiskInfo('C', TotalSpace, AvailSpace);

  ShowMessage(Format(
  'Gesamt: %.0n Bytes, Frei: %.0n Bytes',
  [1.0 * TotalSpace,
   1.0 * AvailSpace]));
end;



end.
nicht über die radiobuttons wundern das is teil von frage 2 ^^


nun die zweite frage von der ich die ganze zeit schreibe:
wenn ich mit ein bissl hilfe das speicher checken zum laufen bekomme würd ich gern auch andere laufwerke, also nich nur C sondern auch die andern anzeigen lassen! aber weil ich von diesem "für jede funktion mach ich jetz nen button weil ichs nich besser kann" weg will und was neues probiern mag hab ich mir gedacht das ich mir da ein paar radiobuttons reinsetze und nur einen button benutze! also für jedes laufwerk im rechner einen radiobutton den man auswählen kann und dann untendrunter nur einen einzigen button mit dem man dann den speichercheck des laufwerks was man durch die radiobuttons ausgewählt hat durchführt! vom prinzip her ist es klar -> ich muss den radio buttons sagen das sie bei dieser stelle hier
Delphi-Quellcode:
begin
  DiskInfo('C', TotalSpace, AvailSpace);

  ShowMessage(Format(
  'Gesamt: %.0n Bytes, Frei: %.0n Bytes',
  [1.0 * TotalSpace,
   1.0 * AvailSpace]));
end;
den laufwerksbuchstaben einfach ändern! nunja das is leichter gesagt als getahn vor allem weil ich auch nich weiss wonach ich suchen könnte um das in der code library zu finden... deshalb bin ich da leicht überfordert *schäm* hat da jemand vll eine lösung für mich? mag wie gesagt nich immer alles mit buttons machen...

liebe grüße

Tonki
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#2

Re: Freier-/Belegter Speicher von Laufwerken

  Alt 5. Okt 2006, 19:40
Hallo,

das was mal so ohne hinzusehehen auffällt:

procedure Button1Click(Sender: TObject); Das Ding gehört raus, dann sollten mal ein paar Fehler weniger sein.

Edit: Die Funktion DiskInfo geht einfacher:
Delphi-Quellcode:
function DiskInfo(Drive:Char; var total, avail: Int64): Boolean;
begin
  Result:=GetDiskFreeSpaceEx(PChar(Drive+':\'), avail, total, nil);
end;
Dann kannst Du (2. Frage) einfach darauf zugreifen:

Delphi-Quellcode:
var c:Char;
begin
   For c:='cto 'zdo begin
      // Hier noch prüfen, ob Laufwerk eine Festplatte ist
      DiskInfo(c, total, avail);
      ...
   end;
end;
Edit2: Da sehe ich nochwas:
"var TotalSpace, AvailSpace: Int64;" gehört gleich nach
"procedure TForm2.Button1Click(Sender: TObject);"
Dann klappts auch mit dem Nachbarn ähm Compiler.
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
Tonki

Registriert seit: 18. Sep 2006
10 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Freier-/Belegter Speicher von Laufwerken

  Alt 5. Okt 2006, 20:03
huhu!
erstmal vielen dank für die schnelle antwort!!!

und hab gleich die nächste frage ^^
bleibt der befehl für den button gleich oder muss ich den dann auch ändern? so wie ich das sehe hast du ja nur die funktion oben geändert bzw verkürzt *nachdenk*


edit 1:
hm den code für meine 2. frage versteh ich leider garnicht... ich kann mir denken das er hinter die radiobuttons geschrieben werden muss und das ich für die variable 'z' die du im beispiel angegeben hast eben den laufwerknamen angeben muss denn ich haben will! aber der code ergibt für mich irgendwie keinen sinn bzw ich versteh nix von dem was da steht

mein code für den radiobutton sieht jetzt so aus:
Delphi-Quellcode:
procedure TForm2.RadioButton1Click(Sender: TObject);
var c:Char;
begin
   For c:='cto 'cdo begin
      // Hier noch prüfen, ob Laufwerk eine Festplatte ist
      DiskInfo(c, total, avail);
      ...
   end;
end;
bekomm da einige fehlermeldungen...
unter anderem bei: total avail und bei ...
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#4

Re: Freier-/Belegter Speicher von Laufwerken

  Alt 5. Okt 2006, 20:20
Delphi-Quellcode:
procedure TForm2.RadioButton1Click(Sender: TObject);
   var c:Char;
       total, avail:Int64; <- Das hier hast Du vergessen
begin
   For c:='cto 'zdo begin
      // Hier noch prüfen, ob Laufwerk eine Festplatte ist
      DiskInfo(c, total, avail);
      ListBox1.Items.Add('Freier Speicher auf Laufwerk '+c+': '+IntToStr(avail div 1024 div 1024)+' MB))'; // Beispiel
   end;
end;
Der aufruf von DiskInfo funktioniert jetzt nur mehr mit einem Buchstaben (Char) im 1. Parameter.
"For c:='c' to 'z' do begin" bewirkt, das alle Laufwerke von C: bis Z: abgefragt werden.
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
Tonki

Registriert seit: 18. Sep 2006
10 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Freier-/Belegter Speicher von Laufwerken

  Alt 5. Okt 2006, 20:29
langsam glaub ich irgendwie das mein IQ der eines brotes ist ^^ habs immernoch net gepeilt und es funktioniert auch immernoch nich...

da kommt mir dann noch die frage -> so wie ich das jetz verstanden hab bräuchte ich dann nur einen radiobutton wenn er alle laufwerke von c bis z abfragt aber ich hätte da gern sowas wie eine auswahl also das ein radiobutton die variable C um einen anderen laufwerksbuchstaben ersetzt und nich alle abtastet... dafür bräuchte ich ja keinen radiobutton das könnt ich in den standartbutton mit einbauen das er das machen soll

kann aber natürlich auch sein das ich das (wie immer -.-*) falsch verstanden hab in dem fall hab ich nix gesagt ^^

mein code sieht jetzt wie folgt aus:
Delphi-Quellcode:
unit SpeicherCheck;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm2 = class(TForm)
    RadioButton1: TRadioButton;
    Button1: TButton;
    RadioButton2: TRadioButton;
    RadioButton3: TRadioButton;
    procedure Button1Click(Sender: TObject);
    procedure RadioButton1Click(Sender: TObject);
   
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

function DiskInfo(Drive:Char; var total, avail: Int64): Boolean;
begin
  Result:=GetDiskFreeSpaceEx(PChar(Drive+':\'), avail, total, nil);
end;

procedure TForm2.Button1Click(Sender: TObject);
var
  TotalSpace, AvailSpace: Int64;
begin
  DiskInfo('C', TotalSpace, AvailSpace);

  ShowMessage(Format(
  'Gesamt: %.0n Bytes, Frei: %.0n Bytes',
  [1.0 * TotalSpace,
   1.0 * AvailSpace]));
end;

procedure TForm2.RadioButton1Click(Sender: TObject);
var c:Char;
total, avail:Int64;
begin
   For c:='cto 'zdo begin
      // Hier noch prüfen, ob Laufwerk eine Festplatte ist
      DiskInfo(c, total, avail);
      ListBox1.Items.Add('Freier Speicher auf Laufwerk '+c+': '+IntToStr(avail div 1024 div 1024)+' MB))'; //
   end;
end;

end.
im radiobutton sind wieder nahezu alle parameter nicht deklariert =(
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#6

Re: Freier-/Belegter Speicher von Laufwerken

  Alt 5. Okt 2006, 20:48
Zitat von Tonki:
im radiobutton sind wieder nahezu alle parameter nicht deklariert =(
Welche, die ListBox?
Das war nur ein Beispiel, damit das funkt mußt Du eine ListBox ins Formular setzten.

Das geht auf meinem IQ
ListBox1.Items.Add('Freier Speicher auf Laufwerk '+c+': '+IntToStr(avail div 1024 div 1024)+' MB))'; // Beispiel So ist es richtig, Code nicht probiert, nur so getippt und vertippt
ListBox1.Items.Add('Freier Speicher auf Laufwerk '+c+': '+IntToStr(avail div 1024 div 1024)+' MB')); // Beispiel Nen RadioButton brauchts nicht, wenn Du mehr auswahl haben willst nimm ne TCheckBox!
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
Tonki

Registriert seit: 18. Sep 2006
10 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Freier-/Belegter Speicher von Laufwerken

  Alt 5. Okt 2006, 21:18
ok habs geändert und es kommen auch keine fehlermeldungen mehr!
nur noch ne frage ^^ wofür is die listbox da? sollte da was drin stehn? das ergebnis kommt immernoch in nem extra fenster

edit:
ah ok habs selbst heraus gefunden jetz wirds in der listbox angezeigt!
gibts noch ne möglichkeit nur die laufwerke anzeigen zu lassen die wirklich vorhanden sind? mir wird jetz nämlich bei jedemlaufwerk das net vorhanden is angezeigt das 15120MB frei sind... kann eigentlich ja net sein weils die laufwerke nich gibt ^^ das find ich etwas unschön... ich könnt natürlich einfach in code anstatt von c-z von c-h anzeigen lassen dann hätte sich das aber vll hat ja irgendjemand mehr laufwerke und dann isses wieder zu ungenau also müsste es ja da eine möglichkeit geben nur die vorhandenen anzeigen zu lassen aber da meine eigentliche frage jetzt beantwortet ist mach ich den thread schonmal als beantwortet der rest is noch ein bissl verschönerung ^^
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#8

Re: Freier-/Belegter Speicher von Laufwerken

  Alt 5. Okt 2006, 21:21
Zitat:
//Beispiel
Das war nur ein Beispiel, wie es verwendet werden könnte.
Weil ich nicht genau wußte, was du vor hast.
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  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 11:14 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