Ver Mensaje Individual
  #7  
Antiguo 10-08-2013
giulichajari giulichajari is offline
Miembro
 
Registrado: nov 2012
Posts: 306
Reputación: 12
giulichajari Va por buen camino
De vuelta

Bueno vuelvo a publicar, porque no noto ningún efecto al apretar el boton al que tengo asociado el codigo, osea lo que entiendo es que los "labels" deberian cambiar, pero no sucede nada.

el codigo me quedo asi:

Código Delphi [-]
#include 
#include 
#include <string.h>
#include 

#pragma hdrstop
#pragma package(smart_init)
#pragma resource "*.dfm"
#include "Unit1.h"
#include 
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
        AnsiString temp;
        AnsiString Drive = AnsiString(DriveComboBox1->Drive); //EditDrive->Text;

        unsigned int drivetype = GetDriveType(Drive.c_str ());
switch (drivetype)
    {
        case 1 : temp = "No root directory"; return;
        case DRIVE_REMOVABLE : temp = "Removable"; break;
        case DRIVE_FIXED : temp = "Fixed"; break;
        case DRIVE_REMOTE : temp ="Remote (network) drive"; break;
        case DRIVE_CDROM : temp = "CD-ROM"; break;
        case DRIVE_RAMDISK : temp = "RAM disk"; break;
        default: temp = "Unknown"; return;
     }
        LabelDriveType->Caption = temp;
        temp = "";
        DWORD VolumeSerialNumber = 0;
        DWORD MaximumComponentLength = 0;
        DWORD FileSystemFlags = 0;
        char * volumeinfo = new char[255];
        volumeinfo[0] = 0;
        char* FileSystemNameBuffer = new char[255];
        FileSystemNameBuffer[0] = 0;
        GetVolumeInformation (Drive.c_str (), volumeinfo, 255,&VolumeSerialNumber,
        &MaximumComponentLength, &FileSystemFlags,
        FileSystemNameBuffer,255);
        if (strlen(volumeinfo) != 0)
                EditVolumeInfo->Text = volumeinfo ;
        else
                EditVolumeInfo->Text = "- no label -";
//Translate integer to chars for serial number
        char string1[35];
        char string2[35];
        if (VolumeSerialNumber > 0)
                {
                        unsigned int bottom = (LOWORD(VolumeSerialNumber));
                        unsigned int top = (HIWORD(VolumeSerialNumber));
                        sprintf(string1,"%04X",top);
                        sprintf(string2,"%04X",bottom);
                        LabelSerialNum->Caption = AnsiString(string1) + "-" + AnsiString(string2);
                }
        else
        {
                LabelSerialNum->Caption = "- unknown -";
        if (MaximumComponentLength > 0)
                LabelMaxComponentLength->Caption = AnsiString(MaximumComponentLength) + "characters";
        else
                LabelMaxComponentLength->Caption = "- unknown -";
        if (strlen(FileSystemNameBuffer) != 0)
                LabelFileSystemNameBuffer->Caption = FileSystemNameBuffer;
        else
                LabelFileSystemNameBuffer->Caption = "- unknown -";
                LabelFileSystemFlags->Caption = ""; //AnsiString(FileSystemFlags);
        if (FileSystemFlags & FS_CASE_IS_PRESERVED)
                temp += AnsiString("Filename case is preserved.\n");
        if (FileSystemFlags & FS_CASE_SENSITIVE)
                temp += AnsiString("Lookup is case-sensitive.\n");
        if (FileSystemFlags & FS_UNICODE_STORED_ON_DISK)
                temp += AnsiString("Supports Unicode in filenames.\n");
        if (FileSystemFlags & FS_PERSISTENT_ACLS)
                temp += AnsiString("Preserves and enforces ACLs.\n");
        if (FileSystemFlags & FS_FILE_COMPRESSION)
                temp += AnsiString("Supports file-based compression.\n");
        if (FileSystemFlags & FS_VOL_IS_COMPRESSED)
                temp += AnsiString("Volume is compressed. (i.e., DoubleSpace).\n");
        LabelFileSystemFlags->Caption = temp;
        DWORD spc = 0; //Sectors per cluster
        DWORD bps = 0; //Bytes per cluster
        DWORD cluster = 0; //clusters
        DWORD freeclust = 0; //freeclusters
        GetDiskFreeSpace (Drive.c_str (),&spc,&bps,&freeclust,&cluster) ;
        unsigned long v1 = (unsigned long)cluster;
        unsigned long v2 = (unsigned long) spc;
        unsigned long v3 = (unsigned long) bps;
        unsigned long volsize = (v1 * v2)/1024 * v3;
LabelVolumeSize->Caption = AnsiString(volsize);
        unsigned long free_bytes = (freeclust * spc)/1024 * bps;
LabelFreeSpace->Caption = AnsiString(free_bytes);
        if (volsize > 0)
                LabelUsed->Caption = AnsiString(((volsize - free_bytes) * 100) / volsize) +" %";
        else
                LabelUsed->Caption = "n/a";
}
};

Pero no se porque no pasa nada.

Muchas gracias
Saludos..
Responder Con Cita