Wyliczanie dysków

0

Witam! Jak pod builderem moge sprawdzic jle jest dyskow twardych(partycji) i jezeli istnieje dysk D:\ to zeby wyswietlic na np. Label1->Caption = ble??

0
        char cDrive, szBuffer[10];

        for(cDrive = 'A'; cDrive <= 'Z'; cDrive++)
        {
                sprintf(szBuffer, "%c:\\", cDrive);
                if(GetDriveType(szBuffer) != 1)
                        ListBox1->Items->Add(szBuffer);
        }
0
for(cDrive = 'A'; cDrive <= 'Z'; cDrive++)

O zgrozo! Tego to jeszcze nie było...
Użyj funkcji GetLogicalDriveStrings

0

Nie wiem co cię tak zgorszyło Marooned. Jest wiele rozwiazań jednego problemu, a moim sposobem bardzo łatwo uzyskać dodatkowe informacje na temat wybranego dysku.

0

Wrzuć na formatke: ListBox1, Memo1, Label1,... Label6. Visible wszystkich komponentow oprocz Label6 ustaw na false. Zastosuj kod:
/-----------------------------------------------------------------------------------------------
int iDysk;
char ch;

for (ch = 'A'; ch < 'Z'; ch++)
{
AnsiString sDrive = AnsiString(ch) + ":\";
iDysk = GetDriveType(sDrive.c_str());

switch (iDysk)
{
                         break;
  case DRIVE_FIXED     : ListBox1->Items->Add(AnsiString(ch));
                         break;
}

}
ListBox1->Items->SaveToFile("C:\dyski.txt");
Memo1->Lines->LoadFromFile("C:\dyski.txt");
int i = 0;
Label1->Caption = Memo1->Lines->Strings[i];
i = 1;
Label2->Caption = Memo1->Lines->Strings[i];
i = 2;
Label3->Caption = Memo1->Lines->Strings[i];
i = 3;
Label4->Caption = Memo1->Lines->Strings[i];
i = 4;
Label5->Caption = Memo1->Lines->Strings[i];
if(Label2->Caption == "D")
{
Label6->Caption = "dysk D istnieje";
}

0

ech...
no jasne, że trza użyć GetDriveType - ale zamiast tej bezsensownej pętli for użyć GetLogicalDriveStrings.

char Drives[82];
Drives[81]=0;                   //spis dostępnych dysków & FDD & CD
char *line;
TStringList *stacje = new TStringList;

 if (GetLogicalDriveStrings(80, Drives))
 {line = Drives;
//--- Zamiana stringów zakończonych '/0' i na końcu "/0/0" na StringList
  do
  {stacje->Add(line);
   line = StrEnd(line)+1;
  }while (*line!=0);
//--- Koniec zamiany
  for (int i=0; i<stacje->Count; i++)
  {int DrvType = GetDriveType(stacje->Strings[i].c_str());
//tu można zrobić co tam się chce na stacjach
//np. GetDiskFreeSpaceExA, GetVolumeInformation
  }

to wycinek z mojego programu - polecam jednak taki sposób a nie "for (A .. Z)"

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