Tengo una funcion asociada a un boton y los respectivos componentes pero me da un error en la tercera linea, dice "Declaration syntax error", es en la linea
Código Delphi
[-]unsigned int Drivetype = GetDriveType(Drive.c_str ());
Código Delphi
[-]AnsiString temp;
AnsiString Drive = AnsiString(DriveComboBox1->Drive) unsigned int Drivetype = GetDriveType(Drive.c_str ());
switch (drivetype)
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,
CHAPTER 14 Win32 API Functional Areas 530
255, &VolumeSerialNumber,
&MaximumComponentLength, &FileSystemFlags,
?FileSystemNameBuffer,255);
if (strlen(volumeinfo) != 0)
EditVolumeInfo->Text = volumeinfo ;
else
EditVolumeInfo->Text = “- no label -”;
char string1[35];
char string2[35];
if (VolumeSerialNumber > 0)
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 = “”; 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)
System Services 531
LISTING 14.6 Continued
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; DWORD bps = 0; DWORD cluster = 0; DWORD freeclust = 0; 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(FormatSize(volsize));
unsigned long free_bytes = (freeclust * spc)/1024 * bps;
LabelFreeSpace->Caption = AnsiString(FormatSize(free_bytes));
if (volsize > 0)
LabelUsed->Caption = AnsiString(((volsize - free_bytes) * 100) / volsize) +
?“ %”;
else
LabelUsed->Caption = “n/a”;
}
Al parecer es la funcion Drive.c_str la que da el problema pero no logro darme cuenta que pasa.
Muchas gracias..
Saludos