Borland C++ FAQ Страница 4. Диски и файлы
|
Страница 4 из 17
Диски и файлы - Получение метки диска
// Для получения метки диска напишите следующий код: char DiskLabel[MAX_PATH]; char *DiskName = "c:\\"; // имя диска GetVolumeInformation(DiskName, DiskLabel, MAX_PATH, NULL, NULL, NULL, NULL, 0); // в DiskLabel находится метка диска
- Определение размера диска (VCL вариант)
// Для определения размера диска используйте функцию DiskSize, объявленную в Sysutils.hpp. В параметрах функции диску А соответствует 1, диску В - 2, и т. д., 0 - текущий диск. Следующий код определит размер диска С в байтах. __int64 Size = DiskSize(3);
- Определение свободного пространства на диске (VCL вариант)
// Для определения свободного пространства на диске используйте функцию DiskFree, объявленную в Sysutils.hpp. В параметрах функции диску А соответствует 1, диску В - 2, и т. д., 0 - текущий диск. Следующий код определит размер свободного пространства на диске С в байтах. __int64 FreeSpace = DiskFree(3);
- Создание ярлыка
// для использования функции необходимо подключить файл // 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; }
- Удаление файла в корзину (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); } } - Удаление файла (Вариант 1)
// Для удаления файла надо подключить к проекту Sysutils.hpp и напишите следующий код: void __fastcall TForm1::Button1Click(TObject *Sender) { AnsiString FileName="c:\\readme.txt"; if (DeleteFile(FileName)) Label1->Caption="true"; }
- Удаление файла (Вариант 2)
// Для удаления файла напишите следующий код: #include <stdio.h> String FileName="c:\\1.txt"; remove(FileName.c_str()); - Работа с файлами 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;
- Преобразование *.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; }
|