![]() |
Freier-/Belegter Speicher von Laufwerken
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 ( ![]() 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:
nicht über die radiobuttons wundern das is teil von frage 2 ^^
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. 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:
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* :oops: hat da jemand vll eine lösung für mich? mag wie gesagt nich immer alles mit buttons machen...
begin
DiskInfo('C', TotalSpace, AvailSpace); ShowMessage(Format( 'Gesamt: %.0n Bytes, Frei: %.0n Bytes', [1.0 * TotalSpace, 1.0 * AvailSpace])); end; liebe grüße Tonki |
Re: Freier-/Belegter Speicher von Laufwerken
Hallo,
das was mal so ohne hinzusehehen auffällt:
Delphi-Quellcode:
Das Ding gehört raus, dann sollten mal ein paar Fehler weniger sein.
procedure Button1Click(Sender: TObject);
Edit: Die Funktion DiskInfo geht einfacher:
Delphi-Quellcode:
Dann kannst Du (2. Frage) einfach darauf zugreifen:
function DiskInfo(Drive:Char; var total, avail: Int64): Boolean;
begin Result:=GetDiskFreeSpaceEx(PChar(Drive+':\'), avail, total, nil); end;
Delphi-Quellcode:
Edit2: Da sehe ich nochwas:
var c:Char;
begin For c:='c' to 'z' do begin // Hier noch prüfen, ob Laufwerk eine Festplatte ist DiskInfo(c, total, avail); ... end; end; "var TotalSpace, AvailSpace: Int64;" gehört gleich nach "procedure TForm2.Button1Click(Sender: TObject);" Dann klappts auch mit dem Nachbarn ähm Compiler. |
Re: Freier-/Belegter Speicher von Laufwerken
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 :shock: mein code für den radiobutton sieht jetzt so aus:
Delphi-Quellcode:
bekomm da einige fehlermeldungen...
procedure TForm2.RadioButton1Click(Sender: TObject);
var c:Char; begin For c:='c' to 'c' do begin // Hier noch prüfen, ob Laufwerk eine Festplatte ist DiskInfo(c, total, avail); ... end; end; unter anderem bei: total avail und bei ... |
Re: Freier-/Belegter Speicher von Laufwerken
Delphi-Quellcode:
Der aufruf von DiskInfo funktioniert jetzt nur mehr mit einem Buchstaben (Char) im 1. Parameter.
procedure TForm2.RadioButton1Click(Sender: TObject);
var c:Char; total, avail:Int64; <- Das hier hast Du vergessen begin For c:='c' to 'z' do 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; "For c:='c' to 'z' do begin" bewirkt, das alle Laufwerke von C: bis Z: abgefragt werden. |
Re: Freier-/Belegter Speicher von Laufwerken
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:
im radiobutton sind wieder nahezu alle parameter nicht deklariert =(
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:='c' to 'z' do 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. |
Re: Freier-/Belegter Speicher von Laufwerken
Zitat:
Das war nur ein Beispiel, damit das funkt mußt Du eine ListBox ins Formular setzten. Das geht auf meinem IQ :mrgreen:
Delphi-Quellcode:
So ist es richtig, Code nicht probiert, nur so getippt und vertippt :oops:
ListBox1.Items.Add('Freier Speicher auf Laufwerk '+c+': '+IntToStr(avail div 1024 div 1024)+' MB))'; // Beispiel
Delphi-Quellcode:
Nen RadioButton brauchts nicht, wenn Du mehr auswahl haben willst nimm ne TCheckBox!
ListBox1.Items.Add('Freier Speicher auf Laufwerk '+c+': '+IntToStr(avail div 1024 div 1024)+' MB')); // Beispiel
|
Re: Freier-/Belegter Speicher von Laufwerken
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 ^^ |
Re: Freier-/Belegter Speicher von Laufwerken
Zitat:
Weil ich nicht genau wußte, was du vor hast. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:05 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