Borland C++ FAQ
Страница 4. Диски и файлы


Диски и файлы

  1. Получение метки диска

    // Для получения метки диска напишите следующий код:
    char DiskLabel[MAX_PATH];
    char *DiskName = "c:\\"; // имя диска
    GetVolumeInformation(DiskName, DiskLabel, MAX_PATH, NULL, NULL, NULL, NULL, 0);
    // в DiskLabel находится метка диска

  2. Определение размера диска (VCL вариант)

    // Для определения размера диска используйте функцию DiskSize, объявленную в Sysutils.hpp. В параметрах функции диску А соответствует 1, диску В - 2, и т. д., 0 - текущий диск. Следующий код определит размер диска С в байтах.
    __int64 Size = DiskSize(3);

  3. Определение свободного пространства на диске (VCL вариант)

    // Для определения свободного пространства на диске используйте функцию DiskFree, объявленную в Sysutils.hpp. В параметрах функции диску А соответствует 1, диску В - 2, и т. д., 0 - текущий диск. Следующий код определит размер свободного пространства на диске С в байтах.
    __int64 FreeSpace = DiskFree(3);

  4. Создание ярлыка

    // для использования функции необходимо подключить файл
    // shlobj.h
    // lpszPathObj - путь к объекту, для которого будет
    // создаваться ярлык
    // lpszPathLink - где будет создаватья ярлык
    // lpszDesc - описание ярлыка
    HRESULT CreateLink(LPCSTR lpszPathObj, LPSTR lpszPathLink, LPSTR lpszDesc)
    {
    HRESULT hres;
    IShellLink *psl;
    CoInitialize(NULL);
    hres = CoCreateInstance(CLSID_ShellLink, NULL,
    CLSCTX_INPROC_SERVER, IID_IShellLink, (void **)&psl);
    if(SUCCEEDED(hres))
    {
    IPersistFile *ppf;
    psl->SetPath(lpszPathObj);
    psl->SetDescription(lpszDesc);
    hres = psl->QueryInterface(IID_IPersistFile, (void**)&ppf);
    if(SUCCEEDED(hres))
    {
    wchar_t wsz[MAX_PATH];
    MultiByteToWideChar(CP_ACP, 0, lpszPathLink, -1, wsz, MAX_PATH);
    hres = ppf->Save(wsz, true);
    ppf->Release();
    }
    psl->Release();
    CoUninitialize();
    }
    return hres;
    }

  5. Удаление файла в корзину (VCL вариант)

    // разместите компонент TOpenDialog (OpenDialog1) и TButton (Button1) на форме (Form1). Для удаления файла в корзину напишите следующий код:
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    if(OpenDialog1->Execute())
    {
    AnsiString DialogTitle = "Удаление в корзину";
    SHFILEOPSTRUCT FileOpStruct;
    ZeroMemory(&FileOpStruct, sizeof(SHFILEOPSTRUCT));
    FileOpStruct.pFrom = (OpenDialog1->FileName + '\0').c_str();
    FileOpStruct.wFunc = FO_DELETE;
    FileOpStruct.fFlags = FOF_ALLOWUNDO;
    FileOpStruct.lpszProgressTitle = DialogTitle.c_str();
    SHFileOperation(&FileOpStruct);
    }
    }

  6. Удаление файла (Вариант 1)

    // Для удаления файла надо подключить к проекту Sysutils.hpp и напишите следующий код:
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    AnsiString FileName="c:\\readme.txt";
    if (DeleteFile(FileName)) Label1->Caption="true";
    }

  7. Удаление файла (Вариант 2)

    // Для удаления файла напишите следующий код:
    #include <stdio.h>
    String FileName="c:\\1.txt";
    remove(FileName.c_str());

     

  8. Работа с файлами GIF и JPEG

    // Для того, чтобы стандартными средствами C++Builder'a работать с файлами GIF и JPEG, добавьте в начало программы следующий код:
    TPicture *Picture = new TPicture();
    Picture->RegisterFileFormat(__classid(TJPEGImage), "jpg", "jpg",
    __classid(TJPEGImage));
    delete Picture;

    TPicture *Picture = new TPicture();
    Picture->RegisterFileFormat(__classid(TGIFImage), "gif", "gif",
    __classid(TGIFImage));
    delete Picture;

  9. Преобразование *.ico файла в *.bmp

    // На форме разместите TImage (Image1), TOpenDialog (OpenDialog1) и TButton (Button1). Напишите следующий обработчик события OnClick кнопки:
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    AnsiString as;
    TIcon *pi = new TIcon();
    OpenDialog1->DefaultExt = ".ICO";
    OpenDialog1->Filter = "icons (*.ico)|*.ICO";
    OpenDialog1->Options << ofOverwritePrompt << ofFileMustExist << ofHideReadOnly;
    if (OpenDialog1->Execute())
    {
    pi->LoadFromFile(OpenDialog1->FileName);
    as = ChangeFileExt(OpenDialog1->FileName,".BMP");
    Image1->Width = Icon->Width;
    Image1->Height = Icon->Height;
    Image1->Canvas->Draw(0, 0, Icon);
    Image1->Picture->SaveToFile(as);
    }
    delete pi;
    }

     
 
« Предыдущая статья