Модуль "P2KFileManager" (часть 4) - GetDrives

Рубрика: Исходники
Среда, 21 апреля 2010 г.
Просмотров: 189
последняя версия: 3.0.9 build 961 beta
от 07 декабря 2007 г.
function TfrmP2KFileManager.GetDrives(const ADriveStr: string; var ADrives: TDrivesName): byte;
var
  i : byte;
  s: string;
  z: integer;
  x: integer;
begin
  result:= 0; z:= 0; x:= 0;
  s:= ADriveStr;

  if ADrives <> nil then ADrives:= nil;
  if (s[1] = '/') and (length(s) >= 2) then result:= 1;
  for i:=1 to length(s) do if (s[i] = #13){ and (s[i+1] = #10)} then inc(result);
  if result >= 1 then
    begin
      case iReadDisks of
        0 : begin  //0 - все доступные,
              SetLength(ADrives, result);
              for i:= 1 to result do
                begin
                  ADrives[i-1].Name:= Trim(ExtractStr(s, #13));
                  {***} Logger('*** Получение свободного места диска ' + ADrives[i-1].Name);
                  z:= P2K.GetVolumeSize(ADrives[i-1].Name);
                  ADrives[i-1].Size:= z;
                  {***} Logger('*** Размер диска ' + ADrives[i-1].Name + ' = ' + IntToStr(z));
                end;
            end;
        1 : begin  //1 - не читать флешку (/b)
              //if result > 1 then SetLength(ADrives, result-1)
              //              else SetLength(ADrives, result);
              if result > 1 then x:= result-1
                            else x:= result;
              SetLength(ADrives, x);
              for i:= 1 to x do
                begin
                  ADrives[i-1].Name:= Trim(ExtractStr(s, #13));
                  {***} Logger('*** Получение свободного места диска ' + ADrives[i-1].Name);
                  z:= P2K.GetVolumeSize(ADrives[i-1].Name);
                  ADrives[i-1].Size:= z;
                  {***} Logger('*** Размер диска ' + ADrives[i-1].Name + ' = ' + IntToStr(z));
                end;
            end;
        2 : begin  //2 - только диск /a
              SetLength(ADrives, 1);
              ADrives[0].Name:= '/a';
              {***} Logger('*** Получение свободного места диска ' + ADrives[0].Name);
              z:= P2K.GetVolumeSize(ADrives[0].Name);
              ADrives[0].Size:= z;
              {***} Logger('*** Размер диска ' + ADrives[0].Name + ' = ' + IntToStr(z));
            end;
        3 : begin  //3 - только диск /c
              SetLength(ADrives, 1);
              ADrives[0].Name:= '/c';
              {***} Logger('*** Получение свободного места диска ' + ADrives[0].Name);
              z:= P2K.GetVolumeSize(ADrives[0].Name);
              ADrives[0].Size:= z;
              {***} Logger('*** Размер диска ' + ADrives[0].Name + ' = ' + IntToStr(z));
            end;
        4 : begin  //3 - только диск /c
              SetLength(ADrives, 1);
              ADrives[0].Name:= '/e';
              {***} Logger('*** Получение свободного места диска ' + ADrives[0].Name);
              z:= P2K.GetVolumeSize(ADrives[0].Name);
              ADrives[0].Size:= z;
              {***} Logger('*** Размер диска ' + ADrives[0].Name + ' = ' + IntToStr(z));
            end;
      end;
      //SetLength(ADrives, result);
      {
      for i:= 1 to result do
        begin
          ADrives[i-1].Name:= Trim(ExtractStr(s, #13));
          z:= P2K.GetVolumeSize(ADrives[i-1].Name);
          ADrives[i-1].Size:= z;
        end;
      }
    end;
end;
Rambler's Top100