Delphi利用系统环境变量获取常用系统目录

//譬如 %WINDIR% 是表示系统目录的系统变量, 可以这样获取:

var
s: string;
begin
s := GetEnvironmentVariable('WINDIR');
ShowMessage(s); {C:\WINDOWS}
end;

一些系统目录变量列表:

--------变量-----------------------------,-------描述-------------------------------------------
%WINDIR% {系统目录 - C:\WINDOWS}
%SYSTEMROOT% {系统目录 - C:\WINDOWS}
%SYSTEMDRIVE% {系统根目录 - C:}
%HOMEDRIVE% {当前用户根目录 - C:}
%USERPROFILE% {当前用户目录 - C:\Documents and Settings\wy}
%HOMEPATH% {当前用户路径 - \Documents and Settings\wy}
%TMP% {当前用户临时文件夹 - C:\DOCUME~1\wy\LOCALS~1\Temp}
%TEMP% {当前用户临时文件夹 - C:\DOCUME~1\wy\LOCALS~1\Temp}
%APPDATA% {当前用户数据文件夹 - C:\Documents and Settings\wy\Application Data}
%PROGRAMFILES% {程序默认安装目录 - C:\Program Files}
%COMMONPROGRAMFILES% {文件通用目录 - C:\Program Files\Common Files}
%USERNAME% {当前用户名 - wy}
%ALLUSERSPROFILE% {所有用户文件目录 - C:\Documents and Settings\All Users}
%OS% {操作系统名 - Windows_NT}
%COMPUTERNAME% {计算机名 - IBM-B63851E95C9}
%NUMBER_OF_PROCESSORS% {处理器个数 - 1}
%PROCESSOR_ARCHITECTURE% {处理器芯片架构 - x86}
%PROCESSOR_LEVEL% {处理器型号 - 6}
%PROCESSOR_REVISION% {处理器修订号 - 0905}
%USERDOMAIN% {包含用户帐号的域 - IBM-B63851E95C9}
%COMSPEC% {C:\WINDOWS\system32\cmd.exe}
%PATHEXT% {执行文件类型 - .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.pyo;.pyc;.py;.pyw}

 获取程序的路径

Delphi 在启动应用程序时与 C 语言一样会传递命令行参数给应用程序,第一个参数(索引号为零)表示应用程序本身的文件名(包括完整的路径),这个 String 参数由函数 ParamStr(0) 返回。
顺便说一句,Delphi 提供了分析文件名的多个函数,如果你需要从文件名中得到路径名,可用下面的两个函数,这两个函数有一点点微小的差别:
ExtractFilePath(FileName:String) 该函数返回路径名,其结尾字符总是“\”
ExtractFileDir(FileName:String) 该函数同样返回路径名,但不包括结尾的字符“\”,除非返回的路径是根目录。
例如:获取当前程序的路径时就应该这样写

var
patch:string;
………
patch:=ExtractFilePath(ParamStr());
如果调用同一目录下的aa.ini文件,就应该这样写
inifilename:string;
inifilename:=patch+'aa.ini';

获取临时文件夹路径

//声明:
GetTempPath(
nBufferLength: DWORD; {缓冲区大小}
lpBuffer: PChar {缓冲区}
): DWORD; {返回实际长度} //举例:
var
arr: array[..MAX_PATH] of Char;
num: DWORD;
begin
num := GetTempPath(MAX_PATH, arr);
ShowMessage(arr); {C:\DOCUME~1\wy\LOCALS~1\Temp\}
ShowMessage(IntToStr(num)); {}
end;

获取系统特殊文件夹

我们在编写程序的时候,经常会需要得到系统中的一些特殊目录,例如:桌面、收藏夹、历史文件、字体等。在windows98、windows NT、Windows 2000中他们的位置是不一样的,尤其在windows2000和wodows NT中,他们的位置随着登陆用户的不同而改变。那么我们要如何取得这些特殊目录的具体位置呢?
当然是利用Api函数,现在我介绍两个Api函数,利用他们就可以轻松简单的获取这些特殊系统目录。
Function SHGetSpecialFolderLocation(hwndOwner: HWND; nFolder: Integer;
var ppidl: PItemIDList): HResult; stdcall;
Function SHGetPathFromIDList(pidl: PItemIDList; pszPath: PChar): BOOL;stdcall;
其中由nFolder参数指定的就是各个特殊系统目录:
CSIDL_DESKTOP:毫无疑问这就是桌面;
CSIDL_DRIVERS:我的电脑;
CSIDL_FAVORITES:收藏夹;
CSIDL_STARTUP:开始菜单;
CSIDL_NETWORK:网上邻居;
还有很多,你可以查阅一下Delphi的Win32 Api函数的帮助文件,不过在帮助文件下的这些参数也不是很全,像收藏夹帮助文件里面就没有,你可以查阅一下它的头文件:shlobj.pas。
下面我就利用这两个函数取得桌面的路径(在win98和win2000下都可以使用):

uses shlobj;
var
pitem:PITEMIDLIST;
s:string;
begin
shGetSpecialFolderLocation(handle,CSIDL_DESKTOP,pitem);
setlength(s,);
shGetPathFromIDList(pitem,pchar(s));
end;

在字符串s中存储的就是桌面的路径值。简单吧!就是这么简单,但要是你不知道,你就得绕一个大圈子。

获取文件所在路径

//delphi 获取文件所在路径

ExtractFileDrive :返回完整文件名中的驱动器,如"C:"
ExtractFilePath:返回完整文件名中的路径,最后带“/”,如"C:/test/"
ExtractFileDir:返回完整文件名中的路径,最后不带“/” ,如"C:/test"
ExtractFileName:返回完整文件名中的文件名称 (带扩展名),如"mytest.doc"
ExtractFileExt 返回完整文件名中的文件扩展名(带.),如".doc" ExtractRelativePath : 返回相对路径,定义如下:
function ExtractRelativePath(const BaseName, DestName: string): string;
使用测试下如:
SysUtils.ExtractRelativePath('C:/test','C:/Test/TestRelativePath'):返回TestRelativePath
SysUtils.ExtractRelativePath('C:/Test/TestRelativePath','C:/test'):返回'../TestRelativePath'
SysUtils.ExtractRelativePath('C:/Test/TestRelativePath/','C:/test'):返回'../../TestRelativePath'
ExtractShortPathName :返回短文件名,即8+,文件名长八位,扩展名为3号,为保持DOS系统兼容而存在 若想获取的文件名不带路径,可用:
ChangeFileExt(TIdAttachment(Msg.MessageParts.Items[intIndex]).Filename,''); 函数将扩展名改掉即可.目前好象就这一种办法,谁还有更好的办法?请告知 另附其它地方的资料: 、文件名函数
  文件名函数可以对文件的名称、所在子目录、驱动器和扩展名等进行操作。下表列出这些函数及其功能。
函数 说明
ExpandFileName() 返回文件的全路径(含驱动器、路径)
ExtractFileExt() 从文件名中抽取扩展名
ExtractFileName() 从文件名中抽取不含路径的文件名
ExtractFilePath() 从文件名中抽取路径名
ExtractFileDir() 从文件名中抽取目录名
ExtractFileDrive() 从文件名中抽取驱动器名
ChangeFileExt() 改变文件的扩展名
ExpandUNCFileName() 返回含有网络驱动器的文件全路径
ExtractRelativePath() 从文件名中抽取相对路径信息
ExtractShortPathName() 把文件名转化为DOS的8·格式
MatchesMask() 检查文件是否与指定的文件名格式匹配
ExtractFilePath(FileName:String)
该函数返回路径名,其结尾字符总是“/”
ExtractFileDir(FileName:String)
该函数同样返回路径名,但不包括结尾的字符“/”,除非返回的路径是根目录。
  下面就把这些函数作一一介绍:
⑴ExpandFileName()
  原型:extern PACKAGE AnsiString __fastcall ExpandFileName(const AnsiString FileName);
  功能:返回文件的全路径(含驱动器、路径)
  参数:FileName:要处理的文件名
  例:ShowMessage(ExpandFileName(Application->ExeName));//显示你的程序文件名,如C:/MyBCB/Sample1.EXE
⑵ExtractFileExt()
  原型:extern PACKAGE AnsiString __fastcall ExtractFileExt(const AnsiString FileName);
  功能:从文件名中抽取扩展名
  参数:FileName:要处理的文件名(全路径)
  例:ShowMessage(ExtractFileExt(Application->ExeName));//显示".exe"
⑶ExtractFileName()
  原型:extern PACKAGE AnsiString __fastcall ExtractFileName(const AnsiString FileName);
  功能:从文件名中抽取不含路径的文件名
  参数:FileName:要处理的文件名
  例:ShowMessage(ExtractFileExt("c://Winnt//SOL.EXE"));//显示"SOL.EXE"
⑷ExtractFilePath()
  原型:extern PACKAGE AnsiString __fastcall ExtractFilePath(const AnsiString FileName);
  功能:从文件名中抽取路径名
  参数:FileName:要处理的文件名
  例:ShowMessage(ExtractFilePath("Winnt//SOL.EXE"));//显示"Winnt/"
⑸ExtractFileDir()
  原型:extern PACKAGE AnsiString __fastcall ExtractFileDir(const AnsiString FileName);
  功能:从文件名中抽取目录名(和上个函数不同,不包括最后的"/")
  参数:FileName:要处理的文件名
  例:ShowMessage(ExtractFileDir("Winnt//SOL.EXE"));//显示"Winnt",注意和上个函数的区别
⑹ExtractFileDrive()
  原型:extern PACKAGE AnsiString __fastcall ExtractFileDrive(const AnsiString FileName);
  功能:从文件名中抽取驱动器名
  参数:FileName:要处理的文件名
  例:ShowMessage(ExtractFileDrive("c://Winnt//SOL.EXE"));//显示"c:"
⑺ChangeFileExt()
  原型:extern PACKAGE System::AnsiString __fastcall ChangeFileExt(const System::AnsiString FileName, const System::AnsiString Extension);
  功能:更改文件名的扩展名,不是对真正的文件进行改名,只是对文件名这个字符串进行处理
  参数:FileName:要改名的文件名,Extension:新的扩展名
  例:ShowMessage(ChangeFileExt("c://Winnt//SOL.EXE",".OOO"));//显示"c:/winnt/SOL.OOO"
⑻ExpandUNCFileName()
  原型:extern PACKAGE AnsiString __fastcall ExpandUNCFileName(const AnsiString FileName);
  功能:返回含有网络驱动器的文件全路径,格式为://机器名/共享名/文件名
  参数:FileName:要处理的文件名
  例:ShowMessage(ExpandUNCFileName("F://Winnt//SOL.EXE"));/*如果F:是映射的网络驱动器,则显示"
⑼ExtractRelativePath()
  原型:extern PACKAGE AnsiString __fastcall ExtractRelativePath(const AnsiString BaseName, const AnsiString DestName);
  功能:从文件名中抽取相对路径信息,如"../sss/ss.asd"这种形式
  参数:BaseName:基准文件名;DestName:目标文件名
  例:ShowMessage(ExtractRelativePath("D://Source//c//1.123","D://Source//Asm//dz.asm"));/*显示"../asm/dz.asm"*/
⑽ExtractShortPathName()
  原型:extern PACKAGE AnsiString __fastcall ExtractShortPathName(const AnsiString FileName);
  功能:把文件名转换为DOS的8、格式
  参数:FileName:要处理的文件名
  例:ShowMessage(ExtractShortPathName("E://Program Files//Dual Wheel Mouse//4dmain.exe"));/*显示"E:/Progra~1/dualwh~1/4dmain.exe"*/
⑾MatchesMask()
  原型:extern PACKAGE bool __fastcall MatchesMask(const AnsiString Filename, const AnsiString Mask);
  功能:检查文件是否与指定的文件名格式匹配
  参数:FileName:要处理的文件名;Mask:文件名格式,支持通配符
  例:ShowMessage(MatchesMask("Lxf.exe","*.?x?));//显示"true"

返回临时文件夹文件路径

function GetExePath: string;
begin
Result := ExtractFilePath(ParamStr());
end; function GetTempFileName: string;
var
vPath: string;
begin
SetLength(Result, );
GetTempFileName(PChar(GetExePath), PChar('~'), , PChar(result)); vPath := GetExePath + 'temp\';
if not SysUtils.DirectoryExists(vPath) then
SysUtils.ForceDirectories(vPath);
result := PChar(Result); //去掉多余的空字符
Result := vPath + ExtractFileName(Result);
end;

 文件路径问题

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls; type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
LabeledEdit1: TLabeledEdit;
LabeledEdit2: TLabeledEdit;
OpenDialog1: TOpenDialog;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; var
Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute() then
begin
LabeledEdit1.Text:= OpenDialog1.FileName;
end;
end; procedure TForm1.Button2Click(Sender: TObject);
begin
if OpenDialog1.Execute() then
begin
LabeledEdit2.Text:= OpenDialog1.FileName;
end;
end; procedure TForm1.Button3Click(Sender: TObject);
begin
//RenameFile('Oldname', 'Newname');
MoveFile(PChar(LabeledEdit1.Text), PChar(LabeledEdit2.Text));
end;
function ReFileName(filepath: string): string;
begin
result := ChangeFileExt(ExtractFileName(filepath), '');
{
Edit4.Text:=paramstr(0);//C:\FILE\Project1.exe
Edit2.Text:=ExtractFilePath(Application.ExeName);//C:\FILE\
Edit1.Text:=ExtractFileName(Application.ExeName);//Project1.exe
Edit3.Text:=ExtractFileExt(Application.ExeName);//.exe
}
end;
if FileExists(extractFilePath(application.exeName)+'newFile\123.txt')
then
label2.Caption :='创建成功'
else
label2.Caption :='创建失败';
end;
end.

 文件路径相关的字符串操作

//delphi文件路径相关的字符串操作
uses
HTTPApp, Masks; procedure TForm1.Button1Click(Sender: TObject);
var
ss,s: string;
begin
//先提取一个文件名的字符串
ss := Application.ExeName;
ShowMessage(ss); //C:\Documents and Settings\wy\My Documents\RAD Studio\Projects\Project1.exe //路径
s := ExtractFilePath(ss);
ShowMessage(s); //C:\Documents and Settings\wy\My Documents\RAD Studio\Projects\ //所在文件夹
s := ExtractFileDir(ss);
ShowMessage(s); //C:\Documents and Settings\wy\My Documents\RAD Studio\Projects //所在逻辑盘
s := ExtractFileDrive(ss);
ShowMessage(s); //C: //文件名
s := ExtractFileName(ss);
ShowMessage(s); //Project1.exe //文件扩展名
s := ExtractFileExt(ss);
ShowMessage(s); //.exe //相对路径
s := ExtractRelativePath('C:\Documents and Settings\wy\My Documents\',ss);
ShowMessage(s); //RAD Studio\Projects\Project1.exe //dos下的短文件名
s := ExtractShortPathName(ss);
ShowMessage(s); //C:\DOCUME~1\wy\MYDOCU~1\RADSTU~1\Projects\Project1.exe //转换到Unix路径格式, 需要 uses HTTPApp
s := DosPathToUnixPath(ss);
ShowMessage(s); //C:/Documents and Settings/wy/My Documents/RAD Studio/Projects/Project1.exe //转Unix路径格式为Window格式, 是 DosPathToUnixPath 的逆操作
s := ExpandUNCFileName(DosPathToUnixPath(ss));
ShowMessage(s); //C:\Documents and Settings\wy\My Documents\RAD Studio\Projects\Project1.exe //去掉结尾的路径分隔符
s := ExcludeTrailingPathDelimiter(ExtractFilePath(ss));
ShowMessage(s); //C:\Documents and Settings\wy\My Documents\RAD Studio\Projects //去掉结尾的路径分隔符, 只是调用:ExcludeTrailingPathDelimiter
s := ExcludeTrailingBackslash(ExtractFilePath(ss));
ShowMessage(s); //C:\Documents and Settings\wy\My Documents\RAD Studio\Projects //更换扩展名, 并不修改文件, 只是替换字符串:
s := ChangeFileExt(ss,'.bak');
ShowMessage(s); //C:\Documents and Settings\wy\My Documents\RAD Studio\Projects\Project1.bak //更换文件路径:
s := ChangeFilePath(ss,'c:\temp');
ShowMessage(s); //c:\temp\Project1.exe //判断第几个字符是否是路径分隔符:
IsPathDelimiter(ss,); //返回 True //判断后缀名是不是 exe; 需要 uses Masks
MatchesMask(ss,'*.exe'); //返回 True
end;
-------------------------------------------------------------------------------- //分解 ProcessPath (需要 uses FileCtrl)
var
s,p,f: string;
d: Char;
begin
s := ParamStr();
ShowMessage(s); //C:\Documents and Settings\wy\My Documents\RAD Studio\Projects\Project1.exe
ProcessPath(s,d,p,f);
ShowMessage(d); //C
ShowMessage(p); //\Documents and Settings\wy\My Documents\RAD Studio\Projects
ShowMessage(f); //Project1.exe
end;
-------------------------------------------------------------------------------- //压缩显示 MinimizeName (需要 uses FileCtrl)
var
s: string;
begin
s := ParamStr();
s := MinimizeName(s,Self.Canvas,);
ShowMessage(s); //C:\...\Project1.exe
end;

搜索文件夹和文件

function FindFile(Path: string): string; {搜索文件夹和文件}
var
Sr: TSearchRec;
CommaList: TStringList;
s: string;
dt: TDateTime;
begin
commalist := Tstringlist.Create;
try
Findfirst(path + '*.*', faAnyFile, sr);
if ((Sr.Attr and faDirectory) > ) and (Sr.Name <> '.') then
begin
dt := FileDateToDateTime(sr.Time);
s := FormatDateTime('yyyy-mm-dd hh:nn', dt);
commalist.add('*' + s + sr.name);
end;
while findnext(sr) = do
begin
if ((Sr.Attr and faDirectory) > ) and (Sr.Name <> '..') then
begin
dt := FileDateToDateTime(sr.Time);
s := FormatDateTime('yyyy-mm-dd hh:nn', dt);
commalist.add('*' + s + sr.name);
end;
end;
FindClose(sr);
FindFirst(path + '*.txt', faArchive + faReadOnly + faHidden + faSysFile, Sr);
if Sr.Attr <> faDirectory then
begin
dt := FileDateToDateTime(sr.Time);
s := FormatDateTime('yyyy-mm-dd hh:nn', dt);
commalist.add('\' + s+ Format('%.0n', [sr.Size / ]) + '|' + sr.name);
end; //Inttostr(
while findnext(sr) = do
begin
if (sr.Attr <> faDirectory) then
begin
dt := FileDateToDateTime(sr.Time);
s := FormatDateTime('yyyy-mm-dd hh:nn', dt);
commalist.add('\' + s +Format('%.0n', [sr.Size / ]) + '|' + sr.name);
end;
end;
FindClose(Sr);
except
end;
Result := commalist.Text; //Result是消息的 定义
commalist.Free;
end;

搜索指文件,幷获取该文件的完整路径

procedure TForm1.GetDirFileNameList(sDirPath, sExt: string);
var
sr: TSearchRec; function StrInFileName(s1, sName: string): Boolean;
var
str1, str2: string;
begin
Result := False;
str1 := UpperCase(sName);
str2 := UpperCase(Copy(s1, , Pos('.', s1)-));
if Pos(str2, str1) > then Result := True;
end;
begin
if DirectoryExists(sDirPath) then
begin
if FindFirst(sDirPath + '\*.*', faAnyFile, sr) = then
begin
if (sr.Name <> '.') and (sr.Name <> '..') and StrInFileName(sExt, sr.Name) then
Memo1.Lines.Add(sDirPath + '\' + sr.Name);
while (FindNext(sr) = ) do
begin
if (sr.Name <> '.') and (sr.Name <> '..') and StrInFileName(sExt, sr.Name) then
Memo1.Lines.Add(sDirPath + '\' + sr.Name);
end;
end;
FindClose(sr);
end;
end; procedure TForm1.Button1Click(Sender: TObject);
begin
GetDirFileNameList('E:\king', '123.exe');
end;

软件实现双击打开文件

unit shjAssociateFileType;

interface
uses Windows, Registry;
{将文件类型strFileExtension与程序strExeFileName相关联,strDiscription为文件类型说明}
function AssignToProgram(const strFileExtension, strDiscription, strExeFileName: string ): boolean;
implementation
{将文件类型strFileExtension与程序strExeFileName相关联,strDiscription为文件类型说明}
function AssignToProgram(const strFileExtension, strDiscription, strExeFileName: string ): boolean;
var
regFile: TRegistry;
begin
//建立一个Registry实例
regFile := TRegistry.Create;
with regFile do
begin
//设置根键值为HKEY_CLASSES_ROOT
RootKey := HKEY_CLASSES_ROOT;
//创建或者打开扩展名自动关联注册键
OpenKey( '.' + strFileExtension, true);
//设置扩展名自动关联
WriteString('', strFileExtension + '_Auto_File');
//关闭键
CloseKey;
//创建或者打开打开自动关联键
OpenKey(strFileExtension + '_Auto_File', true);
//设置文件类型说明
WriteString('', strDiscription);
//关闭键
CloseKey;
//创建或打开关联程序键
OpenKey(strFileExtension + '_Auto_File\shell\open\command', true);
//设置关联程序(注意:%1加上双引号,可以解决文件路径中含空格的问题)
WriteString('',strExeFileName + ' "%1"');
//关闭键
CloseKey;
//打开默认图标键
OpenKey(strFileExtension + '_Auto_File\defaulticon',true);
//关联默认图标
WriteString('', strExeFileName + ',0');
//释放
Free;
Result := True;
end;
end;
end.

软件实现拖拽打开文件

//声明
protected
procedure WMDROPFILES(var Msg : TMessage); message WM_DROPFILES;
------------------------------------------------------------------------------------------------------------------------
//实现
procedure TFormMain.WMDROPFILES(var Msg: TMessage);
var
i, n: Integer;
Buffer: Array[..] of Char;
begin
//得到拖拽文件数量
n := DragQueryFile(Msg.wParam, $FFFFFFFF, Buffer, );
//处理选择多个文件
for i := to n - do
begin
//获取拖拽文件名
DragQueryFile(Msg.wParam, i, Buffer, );
//文件名就在Buffer里面了
if UpperCase(ExtractFileExt(Buffer)) = '.BZLX' then
begin
//判断文件是否已经打开
if UpperCase(Buffer) = UpperCase('test.bzlx') then
begin
MessageDlg('文件test.bzlx已经打开!', (mtInformation),[mbOK],);
exit;
end;
//打开文件
OpenFile(Buffer);
exit;
end;
end;
//结束拖拽
DragFinish(Msg.wParam);
end;
------------------------------------------------------------------------------------------------------------------------
//初始化
procedure TFormMain.FormCreate(Sender: TObject);
begin
//使窗口句柄可以接收拖拽操作
DragAcceptFiles(Handle, True);
end;

文件拖拽获取路径

支持单文件

1. 添加单元 shellAPI

2. 在过程里 procedure TForm1.FormCreate(Sender: TObject);

加入此函数DragAcceptFiles(Form1.Handle,true); //注册拖放文件

3. 在 public 里声明
procedure TFfile(var Msg:TMessage);message WM_DROPFILES;

4.函数实现

procedure TForm1.TFfile(var Msg:TMessage);
var
buffer:array[..] of Char;
begin
inherited;
buffer[]:=#;
DragQueryFile(Msg.WParam,,buffer,sizeof(buffer)); //获取拖入文件名称
label1.Caption:=PChar(@buffer); //字符数组转换成字符串
end;

支持多文件

首先先建立工程然后添加一个memo控件,用来存放路径。
拖拽文件需要用到shellAPI所以,在单元里面需要添加shellAPI

好了我们来看实现过程

1. 添加单元 shellAPI

2. 在过程里 procedure TForm1.FormCreate(Sender: TObject);

加入此函数DragAcceptFiles(Form1.Handle,true); //注册拖放文件

3. 在 public 里声明
procedure TFfile(var Msg:TMessage);message WM_DROPFILES;

4.函数实现

procedure TForm1.TFfile(var Msg:TMessage);
var
FilesCount: Integer;// 文件总数
i: Integer;
buffer:array[..] of Char;
begin
inherited;
try
buffer[]:=#;
FilesCount:=DragQueryFile(Msg.WParam, $FFFFFFFF,nil,); //获取文件个数
Memo1.Lines.Add('文件总数为:'+IntToStr(FilesCount));
// 获取文件名
for i:= to FilesCount- do
begin
DragQueryFile(Msg.WParam, i, buffer,); //获取拖拽文件路径
Memo1.Lines.Add(buffer);
end;
finally
DragFinish(Msg.WParam);
end;
end;

在DELPHI中如何得到一个文件名不带扩展名

Edit4.Text:=paramstr();//C:\FILE\Project1.exe
Edit2.Text:=ExtractFilePath(Application.ExeName);//C:\FILE\
Edit1.Text:=ExtractFileName(Application.ExeName);//Project1.exe
//project
Edit3.Text:=ExtractFileExt(Application.ExeName);//.exe
Edit1.Text:=ChangeFileExt(ExtractFileName(Application.ExeName),'') ; //获取到应用程序名后,将后缀名清空就可以啦。

生成临时文件

//举例:
var
arr,f: array[..MAX_PATH] of Char;
num: DWORD;
begin
num := GetTempPath(MAX_PATH, arr);
ShowMessage(arr); {C:\DOCUME~1\wy\LOCALS~1\Temp\}
GetTempFileName(arr,'-My',,f){C:\DOCUME~1\wy\LOCALS~1\Temp\-my10.temp}
ShowMessage(IntToStr(num));
ShowMessage(IntToStr(num)); {}
end;

Delphi 文件操作(路径、目录)的更多相关文章

  1. Linux基础(10)AIO项目设计与POSIX文件操作和目录管理

    实现fast-cp :拷贝文件到目标对象 Linux的七种文件类型 :https://blog.csdn.net/linkvivi/article/details/79834143 ls -al :h ...

  2. delphi文件操作(比较全)

    Delphi中默认有input和output两个文件变量,使用可以不用定义,直接使用. 但: input:只读.output:只写.用时注意以免引起异常. 文件是由文件名标识的一组数据的集合,文件通常 ...

  3. delphi 文件操作(信息获取)

    delphi获取Exe文件版本信息的函数 Type TFileVersionInfo = Record FixedInfo:TVSFixedFileInfo; {版本信息} CompanyName:S ...

  4. Delphi文件操作函数

    文件是同一种类型元素的有序集合,是内存与外设之间传输数据的渠道.文件的本质是一个数据流,所有的文件实际上是一串二进制序列.文件管理包括:1.文件操作.2.目录操作.3.驱动器操作.三部分. 1.常见文 ...

  5. [C/C++][文件操作] 对比目录并列出同名较新文件、较旧文件 0.1

    主要是模仿robocopy的部分功能 (robocopy /L 参数可以列出本地目录和备份目录中的异同之处,主要是标记出:较新的.较旧的.多出的文件 ) 现在还不会写GUI,打算后面自己做目录树dif ...

  6. (转) unity 在移动平台中,文件操作路径详解

    http://www.unitymanual.com/thread-23491-1-1.html 今天,这篇文章其实是个老生常谈的问题咯,在网上类似的文章也比比皆是,在此我只是做个详细总结方便大家能够 ...

  7. Unity文件操作路径

    Unity3D中的资源路径: Application.dataPath:此属性用于返回程序的数据文件所在文件夹的路径.例如在Editor中就是Assets了. Application.streamin ...

  8. delphi文件操作的总结

    csfinal90我的:收件箱资源博客空间设置|帮助|退出 首页 业界 移动 云计算 研发 论坛 博客 下载 更多 windzb的专栏 目录视图 摘要视图 订阅 IT俱乐部创始人杜鸿飞专访       ...

  9. unity 在移动平台中,文件操作路径详解

    今天,这篇文章其实是个老生常谈的问题咯,在网上类似的文章也比比皆是,在此我只是做个详细总结方便大家能够更好.更快的掌握,当然,如有不足的地方 欢迎指正!!! 相信大家在开发过程中,难免会保存一些文件在 ...

随机推荐

  1. .net从服务端下载文件(可以断点续传)

    public void DownFile(string guid) { var fileTransfer = new FileTransfer(); var directoryPath = Path. ...

  2. 工程师技术(六):Linux工程师 综合测试

    一.Linux工程师 综合测试 目标: 根据本文提供的练习步骤完成所有练习案例. 方案: 开始练习之前,先依次重置虚拟机环境. [root@room9pc13 ~]# rht-vmctl  reset ...

  3. sql中简单的触发器功能

    触发器分为DML触发器和DDL触发器DML触发器包含After触发器,执行insert update delete语句后会触发after触发器,会事务回滚DML触发器还包含instead of触发器, ...

  4. commonJs的运行时加载和es6的编译时加载

    参考 : https://www.cnblogs.com/jerrypig/p/8145206.html 1.commonJs的运行时加载 2.ES6编译时加载

  5. layui.form小例子

    layui.form小例子 需要引入layui的包 <!doctype html> <html> <head> <meta charset="utf ...

  6. Java 空字符串和 字符串为null的区别

    之前一直没有搞清楚 字符串为空和字符串为null的区别,今天写代码一直出现NullPointerException异常,我一直没有搞清楚,后来发现我是这样写的 String s = null; s = ...

  7. Git 设置和取消代理(SOCKS5代理)

    设置代理 git config --global http.proxy 'socks5://127.0.0.1:1080' git config --global https.proxy 'socks ...

  8. Web RTC录视频

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. 通过rocketmq思考一下mq的设计取舍

    1. RocketMQ路由中心NameServer 2. RocketMQ消息发送 3. RocketMQ消息存储 4. RocketMQ消息消费 5. 消息过滤FiterServer 6. Rock ...

  10. ansible了解

    基础知识: ansible简介 ansible 是个什么东西呢?基于 Python paramiko 开发,分布式,无需客户端,轻量级,配置语法使用 YMAL 及 Jinja2模板语言,更强的远程命令 ...