Zajęte miejsce na dysku

0

Mam ListView1 i trzy labele: pierwszy - podaje pojemność; drugi - wolne miejsce; trzeci - zajęte. W ListView wyświetlają się wszystkie dyski w kompie.

mam kod w OnClist Listview1:

procedure TForm1.ListView1Click(Sender: TObject);
var
litera: string;
numer_dysku: integer;
integer64, integer64_2: int64;
string1, string2: string;
zajete: integer;
begin
litera := ListView1.Selected.Caption[1];
if litera = 'A' then
numer_dysku := 1;
if litera = 'B' then
numer_dysku := 2;
// itd.
string1 := Format('%d',[DiskSize(numer_dysku)]);
integer64 := StrToInt64(string1);
label1.caption := FormatFloat('###" MB"', integer64 div 1048576);
string2 := Format('%d',[DiskFree(numer_dysku)]);
integer64_2 := StrToInt64(string2);
label2.caption := FormatFloat('###" MB"', integer64_2 div 1048576);
zajete := integer64_2 - integer64;
label3.caption := FormatFloat('###" MB"', zajete div 1048576);
end;

i prawie wszystko działa ok dal wszystkich dysków. Jednak dla dysku C zajęte miejsce podaje mi liczbę ujemną. Co robić?

P.S
wie ktoś może jak to if litera = 'A' then numer_dysku := 1 wsadzić w petlę?

0

PS.

Wstaw timer'a i sprawdzaj co jakiś czas

0

P.S
numer_dysku=Ord(litera)-Ord('A')+1;

0

numer_dysku := Ord(litera)-64;
Po co tak ze stringami kombinujesz? Wystarczy tak:
Caption := FormatFloat('###" MB"', DiskSize(3) div $100000);
A co do liczby ujemnej to coś takiego występowało przy bardzo dużych dyskach...

0

A co do liczby ujemnej to coś takiego występowało przy bardzo dużych dyskach...

Przecież mam tylko 20 GB.

P.S.
gratuluję 4000.

0

Przecież mam tylko 20 GB.

Dla ciebie to tylko, a u mnie kiedyś w D2 pokazywało ujemną już przy 2GB.
Gdzieś widziałem rozwiązanie tego problemu, ale nie pamietam gdzie :(

1 użytkowników online, w tym zalogowanych: 0, gości: 1