//获取当前文件夹 GetCurrentDir var dir: string; begin dir := GetCurrentDir; ShowMessage(dir); //C:\Documents and Settings\wy\My Documents\RAD Studio\Projects end;
//设置当前文件夹 SetCurrentDir; ChDir; SetCurrentDirectory var dir: string; begin dir := 'c:\temp'; if SetCurrentDir(dir) then ShowMessage(GetCurrentDir); //c:\temp
//建立文件夹 CreateDir; CreateDirectory; ForceDirectories var dir: string; begin dir := 'c:\temp\delphi'; if not DirectoryExists(dir) then CreateDir(dir); //返回 Boolean
//获取当前文件的版本号 GetFileVersion var s: string; i: Integer; begin s := 'C:\WINDOWS\notepad.exe'; i := GetFileVersion(s); //如果没有版本号返回 -1 ShowMessage(IntToStr(i)); //327681 这是当前记事本的版本号(还应该再转换一下) end;
//获取磁盘空间 DiskSize; DiskFree var r: Real; s: string; begin r := DiskSize(3); //获取C:总空间, 单位是字节 r := r/1024/1024/1024; Str(r:0:2,s); //格式为保留两位小数的字符串 s := 'C盘总空间是: ' + s + ' GB'; ShowMessage(s); //xx.xx GB
r := DiskFree(3); //获取C:可用空间 r := r/1024/1024/1024; Str(r:0:2,s); s := 'C盘可用空间是: ' + s + ' GB'; ShowMessage(s); //xx.xx GB end;
//查找一个文件 FileSearch var FileName,Dir,s: string; begin FileName := 'notepad.exe'; Dir := 'c:\windows'; s := FileSearch(FileName,Dir);
if s<>'' then ShowMessage(s) //c:\windows\notepad.exe else ShowMessage('没找到'); end; --------------------------------------------------------------------------------
//搜索文件 FindFirst; FindNext; FindClose var sr: TSearchRec; //定义 TSearchRec 结构变量 Attr: Integer; //文件属性 s: string; //要搜索的内容 List: TStringList; //存放搜索结果 begin s := 'c:\windows\*.txt'; Attr := faAnyFile; //文件属性值faAnyFile表示是所有文件 List := TStringList.Create; //List建立
if FindFirst(s,Attr,sr)=0 then //开始搜索,并给 sr 赋予信息, 返回0表示找到第一个 begin repeat //如果有第一个就继续找 List.Add(sr.Name); //用List记下结果 until(FindNext(sr)<>0); //因为sr已经有了搜索信息, FindNext只要这一个参数, 返回0表示找到 end; FindClose(sr); //需要结束搜索, 搜索是内含句柄的
function FileGetAttr(const FileName: string): Integer; begin Result := GetFileAttributes(PChar(FileName)); end;
function FileSetAttr(const FileName: string; Attr: Integer): Integer; begin Result := 0; if not SetFileAttributes(PChar(FileName), Attr) then Result := GetLastError; end; {$ENDIF}
function FileSetAttr(const FileName: string; Attr: Integer): Integer; begin Result := 0; if not SetFileAttributes(PChar(FileName), Attr) then Result := GetLastError; end; {$ENDIF}
//获取磁盘空间 DiskSize; DiskFreevarr: Real;s: string;beginr := DiskSize(3); //获取C:总空间, 单位是字节r := r/1024/1024/1024;Str(r:0:2,s); //格式为保留两位小数的字符串s := 'C盘总空间是: ' + s + ' GB';ShowMessage(s); //xx.xx GBr := DiskFree(3); //获取C:可用空间r := r/1024/1024/1024;Str(r:0:2,s);s := 'C盘可用空间是: ' + s + ' GB';ShowMessage(s); //xx.xx GBend;=====================function DiskSize(Drive: Byte): Int64;varFreeSpace: Int64;beginif not InternalGetDiskSpace(Drive, Result, FreeSpace) then Result := -1;end;{$ENDIF}function DiskFree(Drive: Byte): Int64;varTotalSpace: Int64;beginif not InternalGetDiskSpace(Drive, TotalSpace, Result) then Result := -1;end; -------------------------------------------------------------------------------- //查找一个文件 FileSearchvarFileName,Dir,s: string;beginFileName := 'notepad.exe';Dir := 'c:\windows';s := FileSearch(FileName,Dir);if s<>'' then ShowMessage(s) //c:\windows\notepad.exeelse ShowMessage('没找到');end;=================function FileSearch(const Name, DirList: string): string;varI, P, L: Integer;C: Char;beginResult := Name;P := 1;L := Length(DirList);while True dobegin if FileExists(Result) then Exit; while (P <= L) and (DirList[P] = PathSep) do Inc(P); if P > L then Break; I := P; while (P <= L) and (DirList[P] <> PathSep) do begin if DirList[P] in LeadBytes then P := NextCharIndex(DirList, P) else Inc(P); end; Result := Copy(DirList, I, P - I); C := AnsiLastChar(Result)^; if (C <> DriveDelim) and (C <> PathDelim) then Result := Result + PathDelim; Result := Result + Name;end;Result := '';end; -------------------------------------------------------------------------------- //获取当前文件的版本号 GetFileVersionvars: string;i: Integer;begins := 'C:\WINDOWS\notepad.exe';i := GetFileVersion(s); //如果没有版本号返回 -1ShowMessage(IntToStr(i)); //327681 这是当前记事本的版本号(还应该再转换一下)end;===============function GetFileVersion(const AFileName: string): Cardinal;varFileName: string;InfoSize, Wnd: DWORD;VerBuf: Pointer;FI: PVSFixedFileInfo;VerSize: DWORD;beginResult := Cardinal(-1);// GetFileVersionInfo modifies the filename parameter data while parsing.// Copy the string const into a local variable to create a writeable copy.FileName := AFileName;UniqueString(FileName);InfoSize := GetFileVersionInfoSize(PChar(FileName), Wnd);if InfoSize <> 0 thenbegin GetMem(VerBuf, InfoSize); try if GetFileVersionInfo(PChar(FileName), Wnd, InfoSize, VerBuf) then if VerQueryValue(VerBuf, '\', Pointer(FI), VerSize) then Result:= FI.dwFileVersionMS; finally FreeMem(VerBuf); end;end;end; -------------------------------------------------------------------------------- //获取指定驱动器的当前路径名 GetDirvardir: string;b: Byte;beginb := 0;GetDir(b,dir);ShowMessage(dir); ////第一个参数: 1、2、3、4...分别对应: A、B、C、D...//0 是缺省驱动器end; -------------------------------------------------------------------------------- //ChangeFileExt 更改文件的后缀扩展名 函数说明 更改指定文件的扩展名,函数原型如下: delphi中源码 function ChangeFileExt(const FileName, Extension: string): string; //第一个参数为要修改的文件名,可以带路径 //第二个参数为修改后的后缀名 //该函数返回修改后的文件名 var I: Integer; begin I := LastDelimiter('.' + PathDelim + DriveDelim,Filename); if (I = 0) or (FileName[I] <> '.') then I := MaxInt; Result := Copy(FileName, 1, I - 1) + Extension; end;
function ChangeFileExt(const FileName, Extension: string): string; var I: Integer; begin I := LastDelimiter('.' + PathDelim + DriveDelim,Filename); if (I = 0) or (FileName[I] <> '.') then I := MaxInt; Result := Copy(FileName, 1, I - 1) + Extension; end;