Delphi FAQ >> Файлы и каталоги Чтобы узнать, сколько файлов находится в корне указанного каталога, можно просто поискать все файлы в нем и посчитать, сколько файлов найдено. Для этого можно воспользоваться функциями Delphi FindFirst … FindNext … FindClose. //возвращает количество файлов в указанной директории function FilesInDir(Dir: String): Integer; var sr: TSearchRec; begin //сначала считаем что …
Delphi FAQ >> Файлы и каталоги Эта функция на языке Delphi рекурсивно подсчитывает полный размер указаннолй папки (включая размер подкаталогов). //возвращает размер папки в байтах function GetDirFullSize(aPath: String): Int64; var sr: TSearchRec; tPath: String; sum: Int64; begin //сначала размер принимаем равным нолю sum := 0; //добавляем завершающий слэш, если нужно tPath := IncludeTrailingBackSlash(aPath); //перебираем содержимое …
Delphi FAQ >> Файлы и каталоги Раньше система оперировала сокращенными именами файлов. Иногда это требуется и сейчас, например чтобы не было в имени файла пробелов, но путь к нему оставался рабочим. Следующая функция на Delphi преобразует полное имя файла в краткое: function ToShortFname(FileName: String): String; var buf: array[0..MAX_PATH-1] of Char; begin SetString(Result, buffer, Windows.GetShortPathName(pchar(FileName), buf, …
Delphi FAQ >> Файлы и каталоги uses Shellapi, Shlobj; … Procedure OpenSpecialDir(const CSIDL:byte); var PIDL: PItemIDList; Info: TShellExecuteInfo; pInfo:PShellExecuteInfo; begin SHGetSpecialFolderLocation(0,CSIDL,PIDL); pInfo:=@Info; With Info do begin cbSize:=SizeOf(Info); fMask:=SEE_MASK_NOCLOSEPROCESS+SEE_MASK_IDLIST; wnd:=0; lpVerb:=nil; lpFile:=nil; lpParameters:=nil; lpDirectory:=nil; nShow:=SW_ShowNormal; hInstApp:=0; lpIDList:=PIDL; end; ShellExecuteEx(pInfo); end; Константа CSIDL берётся из модуля ShlObj. Вот значения CSIDL для некоторых папок: — CSIDL_APPDATA — Application Data — …
Delphi FAQ >> Файлы и каталоги Вот так можно удалить файл в Корзину в программе на Delphi: uses ShellApi; … function DeleteFileWithUndo(sFileName:string):boolean; var fos:TSHFileOpStruct; begin sFileName:=sFileName+#0; FillChar(fos, SizeOf(fos), 0); with fos do begin wFunc := FO_DELETE; pFrom := PChar(sFileName); fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION or FOF_SILENT; end; Result := ( 0 = ShFileOperation(fos) ); end; Сейчас …
Delphi FAQ >> Система Чтобы узнать, в какой файловой системе отформатирован диск, можно создать объект Scripting.FileSystemObject. Ниже приведена готовая функция на Delphi, которая по букве диска (неважно, строчной или прописной) возвращает название файловой системы этого диска: … uses ComObj; … function GetFileSystem(ADriveLetter: Char): String; var fso, drv: OleVariant; begin //создаем объект ‘Scripting.FileSystemObject’ fso := CreateOleObject(‘Scripting.FileSystemObject’); …
Delphi FAQ >> Графика Данная функция на Delphi преобразовывает цветное изображение в черно-белое(оттенки серого): function CreateGrayBmp (Source: TBitmap): TBitmap; var Table: array[Byte] of TRGBQuad; I: Integer; begin Result := TBitmap.Create; with Result do begin PixelFormat := pf8Bit; Width := Source.Width; Height := Source.Height; for I := …
В прошлой части мы научились применять технологию Microsoft Agent в web-страничках. В этот раз мы будем работать с Delphi. Убедитесь, что установлены все необходимые компоненты (см. первую часть) и можно отправляться в увлекательное путешествие по миру MsAgent. Запустите Delphi и в меню «Component» выберите пункт «Import ActiveX Control…». В появившемся диалоговом окне нужно выделить строку …
Delphi FAQ >> Интернет При помощи данной функции, написанной на Delphi, можно вывести список удаленных сетевых подключений. uses Registry; … function DUNGetConnections(OutList : TStrings) : Boolean; var Reg : TRegistry; begin OutList.Clear; Reg := TRegistry.Create; Reg.RootKey := HKEY_CURRENT_USER; if Reg.OpenKey(‘\RemoteAccess\Profile’, False) then begin Reg.GetKeyNames(OutList); Result := True; …