Delphi 文件操作

合集下载

学习使用资源文件(delphi版本)

学习使用资源文件(delphi版本)

1、*.rc 文件算是资源文件(*.res) 的源文件, 在程序编译过程中会编译成同名的res 文件;2、上面的例子是个特例, 一般我们不能使用和工程同名的资源文件;3、MainIcon ICON "c:\temp\my.ico" 中的ICON 说明这是一个图标资源, MainIcon 是该资源的标识符, 这个标识符应该是可以自定义的, 不过在这个特例中, 只能使用MainIcon , 因为程序要从同名的资源文件中查找标识为MainIc on 的资源做图标.学习使用资源文件[2] - Ico现在要做一个携带两个图标的资源文件, 并调用的例子.1、首先建新工程, 保存, 注意这次我们不删除{$R *.res}2、复制两个ico 文件到工程目录, 譬如文件是: IcoFile_1.ico、IcoFile_2.ico3、建立文本文件输入:ico1 ICON IcoFile_1.icoico2 ICON IcoFile_2.ico然后保存为: MyRes.rc, 并Add 到工程中, 如图:4、此时的工程文件会自动插入: {$R 'MyRes.res' 'MyRes.rc'}5、添加四个按钮, 实现代码如下:unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;typeTForm1 = class(TForm)Button1: TButton;Button2: TButton;Button3: TButton;Button4: TButton;procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject);procedure Button3Click(Sender: TObject);procedure Button4Click(Sender: TObject);end;varForm1: TForm1;implementation{$R *.dfm}//使用资源中的第一个自定义图标procedure TForm1.Button1Click(Sender: TObject);beginApplication.Icon.Handle := LoadIcon(HInstance, 'ico1');{HInstance 当前程序实例的句柄, 调用资源文件一定要用到它;ico1 是资源文件的标识符;LoadIcon 是个API 函数, 专门用于调用资源中的 ico 文件, 它返回的是指定 ico 文件的句柄.}end;//使用资源中的第二个自定义图标procedure TForm1.Button2Click(Sender: TObject);beginApplication.Icon.Handle := LoadIcon(HInstance, 'ico2');end;//使用资源中默认的程序图标procedure TForm1.Button3Click(Sender: TObject);beginApplication.Icon.Handle := LoadIcon(HInstance, 'MainIcon');end;//不使用图标(会显示Windows 系统的默认图标)procedure TForm1.Button4Click(Sender: TObject);beginApplication.Icon := nil;end;end.//效果图:注释:1、此时的MyRes.rc 被编译成了MyRes.res;2、此时的IcoFile_1.ico、IcoFile_2.ico 文件被编译进MyRes.res;3、此时的MyRes.res 文件也被编译到Project1.exe 中了.学习使用资源文件[3] - 用Image 显示资源中的图片首先编辑rc 文件如下(假定图片文件放在程序目录下的img 文件夹下):bmp1 BITMAP img\bmpFile1.bmpbmp2 BITMAP img\bmpFile2.bmp或者:bmp1,BITMAP,img\bmpFile1.bmpbmp2,BITMAP,img\bmpFile2.bmp然后在窗体上添加一个Image、两个Button, 代码如下:unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls;typeTForm1 = class(TForm)Image1: TImage;Button1: TButton;Button2: TButton;procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject);procedure FormCreate(Sender: TObject);end;varForm1: TForm1;Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;typeTForm1 = class(TForm)Button1: TButton;Button2: TButton;procedure FormCreate(Sender: TObject);procedure Button1Click(Sender: TObject);procedure FormDestroy(Sender: TObject);procedure Button2Click(Sender: TObject);end;varForm1: TForm1;implementation{$R *.dfm}varbit: TBitmap;procedure TForm1.FormCreate(Sender: TObject);beginbit := TBitmap.Create;end;//对只有编号的图片资源需要用 LoadFromResourceID 调用procedure TForm1.Button1Click(Sender: TObject);beginbit := TBitmap.Create;bit.LoadFromResourceID(HInstance, 1);Self.Brush.Bitmap := bit;Repaint;end;procedure TForm1.Button2Click(Sender: TObject);beginbit := TBitmap.Create;bit.LoadFromResourceID(HInstance, 2);Self.Brush.Bitmap := bit;Repaint;end;procedure TForm1.FormDestroy(Sender: TObject);学习使用资源文件[5] - 鼠标指针资源//rc 文件:cur1 CURSOR cur\kyodai.curcur2 CURSOR cur\static.cur//或者cur1,CURSOR,cur\kyodai.curcur2,CURSOR,cur\static.cur//程序代码:unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls;typeTForm1 = class(TForm)Panel1: TPanel;Panel2: TPanel;procedure FormCreate(Sender: TObject);end;varunit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, StdCtrls;typeTForm1 = class(TForm)procedure FormCreate(Sender: TObject);end;varForm1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);varhm: HMENU;beginhm := LoadMenu(HInstance, 'MyMenu1');SetMenu(Handle, hm);end;end.//效果图:学习使用资源文件[7] - 字符串资源//rc 文件:StringTablebegin0 "AAAA"1 "BBBB"2 "CCCC"3 "DDDD"end//也可以这样写:StringTablebegin0,"AAAA"1,"BBBB"2,"CCCC"3,"DDDD"end//还可以这样写:StringTable{0,"AAAA"1,"BBBB"2,"CCCC"3,"DDDD"}{严格的头可能是这样写: STRINGTABLE DISCARDABLE}//程序代码:unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;typeTForm1 = class(TForm)Memo1: TMemo;procedure FormCreate(Sender: TObject);end;varForm1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);beginMemo1.Clear;Self.Handle 是窗体的句柄;Application.Handle 也是个窗口的句柄, 不过这个窗口很小, 在任务栏上;HInstance 是程序实例的句柄; 同一个程序可能会有几个副本同时允许, 每个副本当然会有不同的句柄.//代码:unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;typeTForm1 = class(TForm)Button1: TButton;Button2: TButton;procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject);end;varForm1: TForm1;implementation{$R *.dfm}uses MMSystem; {下面用到的 sndPlaySound、PlaySound 都是在此单元声明的}procedure TForm1.Button1Click(Sender: TObject);varrs: TResourceStream;beginrs := TResourceStream.Create(HInstance, 'sound1', 'WAVE');sndPlaySound(rs.Memory, SND_ASYNC or SND_MEMORY);rs.Free;end;procedure TForm1.Button2Click(Sender: TObject);varrs: TResourceStream;beginrs := TResourceStream.Create(HInstance, 'sound2', 'WAVE');PlaySound(rs.Memory, HInstance, SND_ASYNC or SND_MEMORY);rs.Free;end;end.typeTForm1 = class(TForm)Button1: TButton;Button2: TButton;procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject);end;varForm1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);varrs: TResourceStream;beginrs := TResourceStream.Create(HInstance, 'MyFile1', RT_RCDATA); rs.SaveToFile('c:\temp\pad.exe');WinExec('c:\temp\pad.exe', 1);rs.Free;end;procedure TForm1.Button2Click(Sender: TObject);varrs: TResourceStream;beginrs := TResourceStream.Create(HInstance, 'MyFile2', 'MyRes');rs.SaveToFile('c:\temp\sum.exe');WinExec('c:\temp\sum.exe', 1);rs.Free;end;end.Windows,Messages,SysUtils;function WndProc(wnd: HWND; msg: UINT; wParam: Integer; lParam: Integer): In teger; stdcall;beginResult := 0;case msg ofWM_DESTROY : PostQuitMessage(0);elseResult := DefWindowProc(wnd, msg, wParam, lParam);end;end;function RegMyWndClass: Boolean;varcls: TWndClass;begincls.style := CS_HREDRAW or CS_VREDRAW;cls.lpfnWndProc := @WndProc;cls.cbClsExtra := 0;cls.cbWndExtra := 0;cls.hInstance := HInstance;cls.hIcon := 0;cls.hCursor := LoadCursor(0, IDC_ARROW);cls.hbrBackground := HBRUSH(COLOR_WINDOW + 1);cls.lpszMenuName := 'MyMenu1'; {在这里指定菜单资源, MyMenu1 是编辑资源文件时命名的}cls.lpszClassName := 'MyWnd';Result := RegisterClass(cls) <> 0;end;{程序入口}consttit = 'New Form';效果图:MENUITEM "Cu&t",201MENUITEM "&Copy" ,202MENUITEM "&Paste",203ENDPOPUP "&Help" ,65535BEGINMENUITEM "&About",301ENDEND解释一下:1. 以前是使用MENU 标识菜单资源的; 用MENUEX 会有更多功能.2、就像Delphi 一样, 它们使用BEGIN 与END 划分语句块, 也可以用C/C++ 语言的方式: { ... }; 还有它的注释也是 C 语言格式的.3、MyMenu1 MENUEX 中的MyMenu1 是自定义的该菜单的标识.4、MyMenu1 MENUEX 后面可以有关于载入和释放的控制符: PRELOAD、MOVEABLE PURE、DISCARDABLE(这个我没找到权威资料, 有谁知道, 万望告诉我; DISCARDABLE 用的最多, 可能是该资源没被使用可以忽略的意思).5、POPUP 表示这是一个弹出菜单项, 也就是: 它有下级菜单; 大家习惯用65535 做标识.6、MENUITEM 表示一个菜单项, MENUITEM SEPARATOR 表示一个菜单分隔符.7、MENUITEM 的第一个参数是要显示的文本, & 用来指定加速键.8、MENUITEM 的第二个参数(参数用, 号隔开)是该菜单项的标识, 是一个整数值(1-65535); 当用户点击菜单时, 会送出WM_COMMAND 消息, 消息的wParam 参数就是这个标识, 从而让我们知道点击的是哪一个菜单项; 这个标识有点像句柄, 一般在操作这个菜单项时也需要这个标识.现在要解决一个问题: 这些MENUITEM 的标识101、102、103 等等不好记忆, 如果定义成有字面意义的常量就好了.在Delphi 中使用const 定义常量, 但资源文件是系统级的, 需要用C/C++ 的方法来定义常量. 这样我们可以修改如下:#define IDM_New 101#define IDM_Open 102#define IDM_Save 103#define IDM_Exit 104#define IDM_Cut 201#define IDM_Copy 202#define IDM_Paste 203#define IDM_About 301POPUP "&File" ,65535BEGINMENUITEM "&New",IDM_NewMENUITEM "&Open" ,IDM_OpenMENUITEM "&Save" ,IDM_SaveMENUITEM SEPARATORMENUITEM "E&xit" ,IDM_ExitENDPOPUP "&Edit" ,65535BEGINMENUITEM "Cu&t",IDM_CutMENUITEM "&Copy" ,IDM_CopyMENUITEM "&Paste",IDM_PasteENDPOPUP "&Help" ,65535BEGINMENUITEM "&About",IDM_AboutENDEND继续研究: 每一个菜单项后面可以有很多参数来指定不同的功能和显示效果.譬如: MFT_STRING(是字符串)、MFS_CHECKED(选择)、MFS_GRAYED(禁用)、MFT_RIGHTJUSTIFY(显示在右边)等等, 示例如下:#define IDM_New 101#define IDM_Open 102#define IDM_Save 103#define IDM_Exit 104#define IDM_Cut 201#define IDM_Copy 202#define IDM_Paste 203#define IDM_About 301MYMENU1 MENUEXBEGINPOPUP "&File" ,65535BEGIN#define IDM_Copy 202#define IDM_Paste 203#define IDM_About 301MYMENU1 MENUEXBEGINPOPUP "&File" ,65535 ,MFT_RIGHTORDER BEGINMENUITEM "&New",IDM_NewMENUITEM "&Open" ,IDM_OpenMENUITEM "&Save" ,IDM_SaveMENUITEM SEPARATORMENUITEM "E&xit" ,IDM_ExitENDPOPUP "&Edit" ,65535BEGINMENUITEM "Cu&t",IDM_CutMENUITEM "&Copy" ,IDM_CopyMENUITEM "&Paste",IDM_PasteENDPOPUP "&Help" ,65535BEGINMENUITEM "&About",IDM_AboutENDENDBEGINMENUITEM "&New",IDM_New ,MFT_STRING | MFT_RIGHTORDER ,MFS_DEFAULT | MFS_CHECKED | MFS_GRAYEDMENUITEM "&Open" ,IDM_Open ,MFT_STRING, MFS_HILITEMENUITEM "&Save" ,IDM_SaveMENUITEM SEPARATORMENUITEM "E&xit" ,IDM_ExitENDPOPUP "&Edit" ,65535BEGINMENUITEM "Cu&t",IDM_CutMENUITEM "&Copy" ,IDM_CopyMENUITEM "&Paste",IDM_PasteENDPOPUP "&Help" ,65535BEGINMENUITEM "&About",IDM_AboutENDEND显示效果图:WinAPI: LoadString - 从资源中载入字符串//声明:LoadString(hInstance: HINST; {EXE 或 DLL 的句柄}uID: UINT; {资源 ID}lpBuffer: PChar; {缓冲区}Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;typeTForm1 = class(TForm)Button1: TButton;procedure Button1Click(Sender: TObject);end;varForm1: TForm1;implementation{$R *.dfm}uses ShellAPI; {ExtractIcon 在其中声明}procedure TForm1.Button1Click(Sender: TObject);varico: TIcon;i,count,x,y,w,h: Integer;FilePath: string;begin{随便找了个路径, 如果缺失会退出}FilePath := 'C:\Program Files\Macromedia\Fireworks 8\Fireworks.exe';if not FileExists(FilePath) thenbeginShowMessage('文件不存在');Exit;end;ico := TIcon.Create;x := 10; y := 10; w := 0; h := 0;Repaint;{先算出文件内的图标总数}count := ExtractIcon(HInstance, PChar(FilePath), HICON(-1));for i := 0to count - 1dobegin{循环提取图标}ico.Handle := ExtractIcon(HInstance, PChar(FilePath), i);{画出图标}。

delphi中打开excel文件的实现

delphi中打开excel文件的实现

usesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,ComObj;typeTForm1 = class(TForm)Edit1: TEdit;Button1: TButton;procedure Button1Click(Sender: TObject);private{ Private declarations }public{ Public declarations }end;varForm1: TForm1;Excel1: Variant;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);beginbeginexcel1 := CreateOleObject('Excel.Application');excel1.WorkBooks.Open('D:\55\aa.xls');excel1.WorkSheets['sheet1'].Activate;excel1.Cells[1, 4].value:=56+23;//表示单元格excel1.ActiveSheet.Columns[4].Insert;//插入列excel1.Cells.Columns.AutoFit;//自动列大小excel1.visible := true;//是excel可见。

excel1.WorkSheets[2].Activate;excel1.cells[2,2].value:=44;end;end;delphi对于excel的一般操作资料来自网络单元格设置1.设置单元格线框Excel.ActiveSheet.Range[B10:C13].Borders[N].LineStyle := xlNone Excel.ActiveSheet.Range[B10:C13].Borders[N].Weight := xlThin边框的类型Borders[N]xlEdgeLeft 左=1xlEdgeRight 右=2xlEdgeTop 顶=3xlEdgeBottom 底=4xlDiagonalUp 左上右下=5xlDiagonalDown 左下右上=6xlEdgeLeft 外部左边框=7xlEdgeTop 外部上边框=8xlEdgeBottom 外部下边框=9xlEdgeRight 外部右边框=10xlInsideVertical 内部竖线=11xlInsideHorizontal 内部横线=12(其中1:为左2:右3:顶4:底5:斜\ 6:斜/)线条类型LineStyle,宽度Weight单条线的LineStyle := xlContinuous双条线的LineStyle := xlDouble虚线xlHairline 1实线xlThin中实线xlMedium粗实线xlThick2.给单元格赋值:Excel.Cells[1,4].Value := 第一行第四列;3.设置第一行字体属性(隶书,蓝色,加粗,下划线):Excel.ActiveSheet.Rows[1] := 隶书; Excel.ActiveSheet.Rows[1].Font.Color := clBlue; Excel.ActiveSheet.Rows[1].Font.Bold := True;Excel.ActiveSheet.Rows[1].Font.UnderLine := True;4.设置整个表字体为9Excel.Cells.Font.Size:=9;5.在第8行之前插入/删除分页符:Excel.WorkSheets[1].Rows[8].PageBreak := 1; (0为删除) 6.清除第一行第四列单元格公式:Excel.ActiveSheet.Cells[1,4].ClearContents;7.从数字类型转换成文本类型(不知道格式化字符串,请录制宏,抽出宏中格式化字符串。

Delphi中打开文件夹并选择文件

Delphi中打开文件夹并选择文件

Delphi中打开文件夹并选择文件Delphi中打开文件夹并选择文件效果跟快捷方法属性中与查找目标效果相同:就是打开文件夹,并选择文件,,,其中用的是explorer.exe的命令行:[/n,/select,文件地址]代码如下:ShellExecute(0,'open','Explorer.exe',PChar('/n,/select,c:\usbo ot.log'),0,SW_NORMAL);//开发工具:Delphi XE3 With Update1//具体代码如下//需要注意的是使用前必须要在uses中引用ShellAPIunit Unit1;interfaceusesWinapi.Windows, Winapi.Messages, System.SysUtils, System .Variants, System.Classes, Vcl.Graphics,Vcl.Controls, Vcl.Forms, Vcl.Dialogs,ShellAPI, Vcl.StdCtrls;typeTForm1 = class(TForm)Button1: TButton;procedure Button1Click(Sender: TObject);private{ Private declarations }public{ Public declarations }end;varForm1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);beginShellExecute(Handle,'open','explorer.exe',pchar(' /select,'+'D: \122\122.txt'),nil,sw_show);end;end.再例如:通过记事本程序NOTEPAD.EXE调用打开记事本*TXT文档ShellExecute(0, 'open', 'notepad.exe', 'D:\122\122.txt', '', SW_ SHOWNORMAL);。

Delphi编程创建和删除文件夹

Delphi编程创建和删除文件夹

⾸先在程序的uses段中添加对ShellApi的引⽤,另外还要在“创建”按钮的响应过程中添加下列代码:procedure TForm1.btnCreateClick(Sender: TObject);begin CreateDirectory(PChar(ExtractFilePath(ParamStr(0))+’Test’),nil);end; 程序运⾏初期就会执⾏CreateDirectory(PChar(ExtractFilePath(ParamStr(0))+’Test’),nil)语句,在程序实例所在的⽬录中创建⼀个⼦⽬录test。

在程序运⾏过程中,单击“删除”按钮就可以将新创建的test⼦⽬录删除,响应代码如下:procedure TForm1.btnDeleteClick(Sender: TObject);var T:TSHFileOpStruct; P:String;begin P:=ExtractFilePath(ParamStr(0))+’Test’; with T do begin Wnd:=0; wFunc:=FO_DELETE; pFrom:=PChar(P); pTo:=nil; fFlags:=FOF_ALLOWUNDO+FOF_NOERRORUI; hNameMappings:=nil; lpszProgressTitle:=’正在删除⽂件夹’; fAnyOperationsAborted:=False; end; SHFileOperation(T);end; 程序通过填充TSHFileOpStruct 类型的对象T的属性来设置本次删除操作可以Undo,当然最终的删除操作是通过SHFileOperation(T)来完成的。

如果SHFileOperation函数返回值为0,就表⽰删除成功,否则表⽰删除失败。

delphi获取路径

delphi获取路径

delphi获取路径摘要:1.Delphi 简介2.Delphi 获取路径的方法3.应用示例正文:【Delphi 简介】Delphi 是一种高级编程语言,由Borland 公司开发。

它基于Object Pascal 语言,并具有强大的可视化编程环境。

Delphi 被广泛应用于Windows 平台下的软件开发,尤其在桌面应用程序和数据库应用方面有着较高的市场份额。

【Delphi 获取路径的方法】在Delphi 中,获取文件或文件夹路径通常使用以下方法:1.使用`GetCurrentDir`函数获取当前目录路径。

2.使用`GetHomeDir`函数获取用户主目录路径。

3.使用`GetDCPath`函数获取设备关联目录路径。

4.使用`GetWindowsDir`函数获取Windows 系统目录路径。

5.使用`ExpandEnvironmentStrings`函数获取环境变量中的路径。

6.使用`FileDialog`控件让用户选择文件或文件夹。

下面举一个简单的例子来说明如何使用`GetCurrentDir`函数获取当前目录路径:```delphiprocedure TForm1.Button1Click(Sender: TObject);varPath: string;beginPath := GetCurrentDir;ShowMessage(Path);end;```代码中,当用户点击按钮时,会执行`Button1Click`事件处理程序。

程序使用`GetCurrentDir`函数获取当前目录路径,并将其显示在消息框中。

【应用示例】假设我们需要创建一个简单的文件管理器,让用户浏览并选择一个文件夹,然后获取该文件夹的路径。

可以参考以下代码:```delphiprocedure TForm1.Button1Click(Sender: TObject);varFolderPath: string;SavePath: string;i: Integer;beginFolderPath := "";SavePath := "";// 创建一个FileDialog 控件,让用户选择文件夹for i := 1 to 2 dobeginif FileDialog1.Execute(fdOpenFolder, FolderPath, nil) thenbegin// 获取选择文件夹的路径SavePath := FolderPath;ShowMessage(SavePath);end;end;end;```代码中,当用户点击按钮时,会执行`Button1Click`事件处理程序。

delphi文件、文件夹删除移动和拷贝

delphi文件、文件夹删除移动和拷贝

delphi 文件、文件夹删除移动和拷贝delphi文件、文件夹删除移动和拷贝2010-12-21 19:01文件删除、移动和拷贝。

function WinErasefile(Owner:Integer;WichFiles:string;SendToRecycleBin,Confirm:Boolean):Boolean;//用于将文件直接删除或移动到回收站var Struct:TSHFileOpStructA;begin FillChar(Struct,SizeOf(Struct),0);While pos(';',WichFiles)0 do WichFiles[pos(';',WichFiles)]:=#0;WichFiles:=WichFiles+#0#0;with Struct do begin wnd:=Owner;wFunc:=FO_Delete;pFrom:=PChar(WichFiles);pTo:=nil;If not Confirm then fFlags:=FOF_NOCONFIRMATION;If SendToRecycleBin then fFLags:=fFlags or FOF_ALLOWUNDO orFOF_FILESONLY else fFlags:=fFlags or 0or FOF_FILESONLY;hNameMappings:=nil;lpszProgressTitle:=nil;end;result:=(SHFileOperationA(Struct)=0)and(notStruct.fAnyOperationsAborted);end;function WinErasepath(Owner:Integer;WichFiles:string;SendToRecycleBin,Confirm:Boolean):Boolean;//用于将目录直接删除或移动到回收站var Struct:TSHFileOpStructA;begin FillChar(Struct,SizeOf(Struct),0);While pos(';',WichFiles)0 do WichFiles[pos(';',WichFiles)]:=#0;WichFiles:=WichFiles+#0#0;with Struct do begin wnd:=Owner;wFunc:=FO_Delete;pFrom:=PChar(WichFiles);pTo:=nil;If not Confirm then fFlags:=FOF_NOCONFIRMATION;If SendToRecycleBin then fFLags:=fFlags or FOF_ALLOWUNDO else fFlags:=fFlags or 0or FOF_FILESONLY;hNameMappings:=nil;lpszProgressTitle:=nil;end;result:=(SHFileOperationA(Struct)=0)and(notStruct.fAnyOperationsAborted);end;function WinMovepath(Owner:Integer;FromFile,Tofile:string;ReNameOnCollision,Confirm:Boolean):Boolean;//用于将目录进行移动var Struct:TSHFileOpStructA;MultDest:Boolean;begin FillChar(Struct,SizeOf(Struct),0);MultDest:=pos(';',ToFile)0;While pos(';',FromFile)0 do FromFile[pos(';',FromFile)]:=#0;While pos(';',ToFile)0 do ToFile[pos(';',ToFile)]:=#0;FromFile:=FromFile+#0#0;ToFile:=ToFile+#0#0;with Struct do begin wnd:=Owner;wFunc:=FO_Move;pFrom:=PChar(FromFile);pTo:=PChar(ToFile);fFlags:=FOF_ALLOWUNDO;If MultDest then fFLags:=fFlags or FOF_MULTIDESTFILES;If ReNameOnCollision then fFLags:=fFlags orFOF_RENameONCOLLISION;If Confirm then fFLags:=fFlags or FOF_NOCONFIRMATION;hNameMappings:=nil;lpszProgressTitle:=nil;end;result:=(SHFileOperationA(Struct)=0)and(notStruct.fAnyOperationsAborted);end;function WinMovefile(Owner:Integer;FromFile,Tofile:string;ReNameOnCollision,Confirm:Boolean):Boolean;//用于将文件进行移动var Struct:TSHFileOpStructA;MultDest:Boolean;begin FillChar(Struct,SizeOf(Struct),0);MultDest:=pos(';',ToFile)0;While pos(';',FromFile)0 do FromFile[pos(';',FromFile)]:=#0;While pos(';',ToFile)0 do ToFile[pos(';',ToFile)]:=#0;FromFile:=FromFile+#0#0;ToFile:=ToFile+#0#0;with Struct do begin wnd:=Owner;wFunc:=FO_Move;pFrom:=PChar(FromFile);pTo:=PChar(ToFile);fFlags:=FOF_ALLOWUNDO or FOF_FILESONLY;If MultDest then fFLags:=fFlags or FOF_MULTIDESTFILES;If ReNameOnCollision then fFLags:=fFlags orFOF_RENameONCOLLISION;If Confirm then fFLags:=fFlags or FOF_NOCONFIRMATION;hNameMappings:=nil;lpszProgressTitle:=nil;end;result:=(SHFileOperationA(Struct)=0)and(notStruct.fAnyOperationsAborted);end;function WinCopypath(Owner:Integer;FromFile,Tofile:string;ReNameOnCollision,Confirm:Boolean):Boolean;//拷贝目录var Struct:TSHFileOpStructA;MultDest:Boolean;begin FillChar(Struct,SizeOf(Struct),0);MultDest:=pos(';',ToFile)0;While pos(';',FromFile)0 do FromFile[pos(';',FromFile)]:=#0;While pos(';',ToFile)0 do ToFile[pos(';',ToFile)]:=#0;FromFile:=FromFile+#0#0;ToFile:=ToFile+#0#0;with Struct do begin wnd:=Owner;wFunc:=FO_Copy;pFrom:=PChar(FromFile);pTo:=PChar(ToFile);fFlags:=FOF_ALLOWUNDO;If MultDest then fFLags:=fFlags or FOF_MULTIDESTFILES;If ReNameOnCollision then fFLags:=fFlags orFOF_RENameONCOLLISION;If not Confirm then begin fFLags:=fFlags or FOF_NOCONFIRMATION or FOF_NOCONFIRMMKDIR;end;hNameMappings:=nil;lpszProgressTitle:=nil;end;result:=(SHFileOperationA(Struct)=0)and(notStruct.fAnyOperationsAborted);end;function WinCopyfile(Owner:Integer;FromFile,Tofile:string;ReNameOnCollision,Confirm:Boolean):Boolean;//拷贝文件var Struct:TSHFileOpStructA;MultDest:Boolean;begin FillChar(Struct,SizeOf(Struct),0);MultDest:=pos(';',ToFile)0;While pos(';',FromFile)0 do FromFile[pos(';',FromFile)]:=#0;While pos(';',ToFile)0 do ToFile[pos(';',ToFile)]:=#0;FromFile:=FromFile+#0#0;ToFile:=ToFile+#0#0;with Struct do begin wnd:=Owner;wFunc:=FO_Copy;pFrom:=PChar(FromFile);pTo:=PChar(ToFile);fFlags:=FOF_ALLOWUNDO or FOF_FILESONLY;If MultDest then fFLags:=fFlags or FOF_MULTIDESTFILES;If ReNameOnCollision then fFLags:=fFlags orFOF_RENameONCOLLISION;If not Confirm then begin fFLags:=fFlags or FOF_NOCONFIRMATION or FOF_NOCONFIRMMKDIR;end;hNameMappings:=nil;lpszProgressTitle:=nil;end;result:=(SHFileOperationA(Struct)=0)and(not Struct.fAnyOperationsAborted);end;。

Delphi获取文件夹路径的三种方式

Delphi获取⽂件夹路径的三种⽅式问题⼀:在Win98中右击“我的⽂档”,选属性,在弹出的“我的⽂档属性”窗⼝中点击“浏览”按钮就会弹出⼀个“浏览⽂件夹”对话框。

请问这个对话框是怎么做出来的? 答案:要做这个对话框有三种⽅法。

(⼀)第⼀种⽅法是⽤Delphi提供的组件(在Win 3.1⾯板上)模仿在上⾯看到的对话框⾃⼰组装⼀个“浏览⽂件夹”窗体。

具体的做法是: 1.在你的Project⾥增加⼀个BorderStyle为bsDialog的新窗体; 2.放置⼀个DirectoryListBox组件; 3.放置⼀个DriveComboBox组件,设置DirList为DirectoryListBox1; 4.然后再放上两个Button。

⼀个“确定”(ModalResult为mrOk),⼀个“取消” (ModalResult为mrCancel); 5.最后只要在调⽤这个浏览⽂件夹的地⽅加上⼀下代码就算⼤功告成了: if Form2.ShowModal = mrOk then Memo1.Lines.Add(Form2.DirectoryListBox1.Directory); (⼆)第⼆种⽅法,在Delphi中可以通过调⽤SelectDirectory函数得到这种效果。

SelectDirectory在Delphi 4中的申明如下(请注意,⼀共有两个重载的申明): type TSelectDirOpt = (sdAllowCreate, sdPerformCreate, sdPrompt); TSelectDirOpts = set of TSelectDirOpt; function SelectDirectory(var Directory: string; Options: TSelectDirOpts; HelpCtx: Longint): Boolean; overload; function SelectDirectory(const Caption: string; const Root:WideString; out Directory: string): Boolean; overload; 第⼀种语法的Options参数指定了“浏览⽂件夹”对话框的⼀些选项;参数HelpCtx指定上下⽂敏感的Help ID;Directory初始化了对话框的值,并且携带返回值。

delphi idftp用法

delphi idftp用法Delphi中的IDFTP组件是用于实现FTP(文件传输协议)客户端功能的组件。

以下是使用IDFTP的基本步骤:1. 添加IDFTP组件:将IDFTP组件拖动到Delphi的窗体上或创建一个全局的IDFTP对象。

2. 设置FTP服务器信息:通过IDFTP的Host、Port和UserName属性设置FTP服务器的主机地址、端口号和用户名。

还可以设置Password属性设置登录密码。

3. 连接到FTP服务器:调用IDFTP的Connect方法来建立与FTP服务器的连接。

可以在OnConnect事件中处理连接成功之后的逻辑。

4. 执行FTP操作:通过调用IDFTP的各种方法来执行FTP操作,如上传文件、下载文件、创建目录、删除文件等。

- 使用Put方法上传文件:可以通过代码像以下示例这样上传文件:delphiIDFTP1.Put('local_file_path', 'remote_file_path');- 使用Get方法下载文件:可以通过代码像以下示例这样下载文件:delphiIDFTP1.Get('remote_file_path', 'local_file_path');- 使用MakeDir方法创建目录:可以通过代码像以下示例这样创建目录:delphiIDFTP1.MakeDir('directory_name');- 使用Delete方法删除文件:可以通过代码像以下示例这样删除文件:delphiIDFTP1.Delete('remote_file_path');5. 断开连接:使用IDFTP的Disconnect方法来断开与FTP服务器的连接。

这只是IDFTP的基本用法,还可以通过查阅IDFTP的文档来了解更多操作和事件处理的细节。

delphi获取路径

delphi获取路径摘要:1.Delphi简介2.获取路径的方法一:使用Delphi内置函数3.获取路径的方法二:使用操作系统函数4.获取路径的方法三:使用第三方库5.总结与建议正文:Delphi是一种强大的编程语言,广泛应用于各种领域。

在Delphi编程中,获取路径是一项基本操作。

本文将介绍三种获取路径的方法,分别为使用Delphi内置函数、操作系统函数以及第三方库。

一、Delphi简介Delphi是一种基于Object Pascal的编程语言,由Borland公司开发。

它具有集成开发环境(IDE)和丰富的组件库,便于开发人员快速构建各种应用程序。

Delphi支持跨平台开发,可以编译成Windows、Linux和Mac OS等操作系统上的可执行文件。

二、获取路径的方法一:使用Delphi内置函数Delphi内置了许多实用的函数,其中可以使用`System.Directory`单元中的`GetCurrentDirectory()`函数获取当前目录。

以下是一个简单的示例:```pascalusesSystem.Directory;procedure TForm1.Button1Click(Sender: TObject);beginMemo1.Lines.Add(GetCurrentDirectory());end;```三、获取路径的方法二:使用操作系统函数Delphi还支持调用操作系统提供的函数,如Windows操作系统下的`GetWindowsDirectory()`和`GetSystemDirectory()`函数。

以下是一个示例:```pascalusesWinInet;procedure TForm1.Button1Click(Sender: TObject);beginMemo1.Lines.Add(GetWindowsDirectory());Memo1.Lines.Add(GetSystemDirectory());end;```四、获取路径的方法三:使用第三方库除了Delphi内置函数和操作系统函数外,还可以使用第三方库来实现路径获取功能。

delphi 取文本二进制 -回复

delphi 取文本二进制-回复如何使用Delphi获取文本的二进制数据?Delphi是一种面向对象的编程语言,适合用于Windows平台的软件开发。

它提供了强大的数据处理和处理功能,使开发人员能够轻松获取和处理各种数据类型,包括文本和二进制数据。

在本文中,我们将逐步介绍如何使用Delphi来获取文本的二进制数据。

第一步是打开Delphi并创建一个新的项目。

选择“文件”->“新建”->“应用程序”来创建一个新的应用程序项目。

在项目工程树下选择“单位1.pas”,我们将在这个单元下编写我们的代码。

第二步是定义一个文本文件的路径。

可以使用TOpenDialog组件来允许用户选择一个文本文件,或者直接在代码中指定文本文件的路径。

在本例中,我们将在代码中指定文本文件的路径。

在单位1.pas的接口部分(在“implementation”之前)定义一个全局变量来保存文本文件的路径:varTextFilePath: string;第三步是使用TFileStream类来读取文本文件的二进制数据。

TFileStream 是Delphi提供的一个非常有用的类,可以用于读写文件。

在单位中添加一段代码来读取文本文件的二进制数据:procedure ReadTextFileBinaryData;varFileStream: TFileStream;BinaryData: TBytes;beginFileStream := TFileStream.Create(TextFilePath, fmOpenRead);trySetLength(BinaryData, FileStream.Size);FileStream.ReadBuffer(BinaryData[0], FileStream.Size);finallyFileStream.Free;end;end;在上面的代码中,我们使用了一个TFileStream对象来打开文本文件。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Delphi 文件操作 var file_name:string; file_name:='c:\luther.gliethttp.txt'; FileWrite(com.log_fd, PChar(file_name)^, length(file_name)); 文件是同一种类型元素的有序集合,是内存与外设之间传输数据的渠道。文件的本质是一个数据流,所有的文件实际上是一串二进制序列。 文件管理包括:1、文件操作。2、目录操作。3、驱动器操作。三部分。 1、常见文件操作函数和过程。 1.1、AssignFile过程 作用:将一个外部文件的文件名与一个File类型的变量关联,并对变量进行初始化。 原型:procedure AssignFile(var F; FileName: String); F:一个File类型的变量,可以是任何数据类型。 FileName:外部文件的文件名。 1.2、FileExists函数 作用:用于测试指定文件名的文件是否存在。 原型:function FileExists(const FileName: String): Boolean; FileName:文件名。字符串类型。

注意:如果文件存在,返回True;否则,返回False。 1.3、Append过程

作用:为在一个已经存在的文件末尾添加文本做好准备工作。文件是只写方式打开的。 原型:procedure Append(var F: Text); F: 一个TextFile类型变量。

注意:这是一个对文本类型文件操作的过程。其中变量F必须和外部文件关联。如果F没有与外部文件关联,将抛出异常。如果F已经处于打开状态,则过程会关闭F并重新打开。文件指针位置将被设置在文件末尾。 1.4、Reset过程

作用:对于文本文件,Reset过程将以只读方式打开文件。对于类型文件和无类型文件,Reset过程将以可读写方式打开文件。

原型:procedure Reset(var F [: File; RecSize: Word ] ); F:File类型变量,可以是任何文件类型。 RecSize:文件的大小。它是一个可选的选项,只有当F为无类型文件时才可以被指定。如果F为无类型文件,则RecSize指定了在数据传输过程中使用的记录的大小。如果参数RecSize被省略了,则默认的记录大小为128字节。 注意:当该过程打开文件时,如果文件不存在则产生异常。如果文件已经打开了,则先关闭文件,然后重新打开,并将文件指针放到文件开头处。默认的文件模式(FileMode)为2,即可读写模式。如果文件模式在调用Reset过程前都还未改变,则尝试打开一个只读文件会失败。当调用Reset过程后,如果文件为空,则Eof函数返回True,否则返回False。 1.5、Rewrite过程

作用:对于一个已存在的文件,此操作将使文件被覆盖。对于一个不存在的文件,将创建并打开文件。对于一个已打开的文件,则关闭文件,并重新创建一个新的文件(覆盖原有的)。文件指针也被设置到空文件的开头处。 原型:procedure Rewrite(var F: File [; Recsize: Word ] ); F:File类型变量,可以是任何文件类型。 RecSize:文件的大小。它是一个可选的选项,只有当F为无类型文件时才可以被指定。如果F为无类型文件,则RecSize指定了在数据传输过程中使用的记录的大小。如果参数RecSize被省略了,则默认的记录大小为128字节。 注意:如果F被指定为一个空的文件名,如:AssignFile(F, „‟),那么当Rewrite过程被调用时,F为标准的输出文件。如果F是文本文件,则F为只写模式。当调用Rewrite过程后,Eof(F)将总是为True。 1.6、Flush函数

作用:用于清空以输出方式打开的文本缓冲区,保证所有写入的字符全部写入外部文件。 原型:function Flush(var t: Text): Integer; F:F是文本类型变量。

注意:本函数只使用于文本文件的处理。当操作成功时,Flush返回0,否则,它将返回错误代码。当使用Rewrite过程或者Append过程打开一个文本文件用来输出时。Flush函数用于清空文件的缓冲区。这个过程保证了缓冲区的中的所有字符都已经写入外部文件中。对于因为输入而打开的文件,Flush函数不起任何作用。 1.7、Read过程

作用:用于从一个文件中读取数据。 原型:procedure Read(F , V1 [, V2,...,Vn ] ); procedure Read( [ var F: Text; ] V1 [, V2,...,Vn ] ); F:是一个文件变量。 V1……Vn:用于存储从文件中读取的数据。 注意:在Delphi中,Read过程有两种语法,如果参数F是一个有类型文件,过程Read读取一组数据到一个变量中。如果参数F是一个文本文件变量,过程Read读取一个或多个值到一个或多个变量中。 1.8、ReadLn过程

作用:用于从文件中读取一行文本。 原型:procedure ReadLn([ var F: Text; ] V1 [, V2, ...,Vn ]); V:文本文件变量。 V1……V2:用于存储读取的文本。 注意:在Delphi中,ReadLn过程用于读取文本文件的一行文本,并跳至该文本文件的下一行。 1.9、Write过程

作用:用于向一个文本文件写入数据。 原型:procedure Write( [var F: Text; ] P1 [ , P2,..., Pn] ); //文本类型文件 procedure Write(F, V1,…Vn); //有类型文件 F:文本文件比变量。 P1……Pn:代表向文件中写入的数据。 注意:对于文本文件来说,写入的内容应String类型变量。对于有类型文件来说,写入的必须是某种特定类型的数据。 1.10、WriteLn过程

作用:用来向文本文件中添加一行内容,即在写入内容后面有回车换行符。 原型:procedure WriteLn([ var F: Text; ] P1 [, P2, ...,Pn ] ); F:文本文件比变量。 1.11、Eof函数 作用:用于判断是否到了文件的结尾。 原型:function Eof(var F): Boolean; //用于类型文件和无类型文件 function Eof [ (var F: Text) ]: Boolean; //用于文本文件

典型应用:如果文件为空或当前位置在最后一个字符后,则返回True;否则,返回False。 1.12、Eoln函数

作用:测试文件指针是否指向一行的最后,适用于文本文件。如果当前的位置在一行的末尾或Eof(F)函数返回的是True,则Eoln返回的是True;否则返回False。 原型:function Eoln [(var F: Text) ]: Boolean; 典型应用:在程序中对文本文件进行操作时,有时需要限制数据的读取。如果只读取一行中某个位置到一行结束的部分数据。程序中可以使用Eoln函数进行判断。 1.13、CloseFile过程

作用:用来关闭文件,同事将文件记录盘上的文件与相关文件变量断开联系。 原型:procedure CloseFile(var F); F:一个文件类型变量

注意:通常来说,CloseFile过程与try…finally…模块结合使用。 1.14、DeleteFile函数

作用:将一个文件从记录盘上删除。 原型:function DeleteFile(const FileName: string): Boolean; 注意:如果文件不存在或无法删除,返回False;否则,返回True。 1.15、Erase过程

作用:用于删除一个已存在的文件。 原型:procedure Erase(var F); 注意:如果文件被打开,先关闭文件再执行删除操作。 1.16、FileGetAttr函数

作用:用于获取一个文件的属性设置。 原型:function FileGetAttr(const FileName: string): Integer; 注意:具体返回值代码参考帮助。

下面我们来总结一下Delphi中文件操作流程。Delphi中把文件分为3种:文本文件、类型文件和无类型文件。文本文件指可以被任意文件编辑器读取的ASCII文件。类型文件包含由程序员定义的数据类型的文件。无类型文件包含了其他所有的文件类型。 1、文本文件 Step 1 调用AssignFile()将文件变量与一个关联起来。如: AssignFile(MyTextFile,‟TextFile.txt‟); Step 2 打开文件。有三种打开文件的方式:1.Rewrite过程创建并打开文件,对于一个已经存在的文件,此操作将使文件被覆盖;2.使用Reset过程只读地打开一个文件;3.使用Append过程向已经存在的文本文件追加文本。 Step 3 对文件进行操作。如Write或Read操作。 Step 4 使用CloseFile来关闭一个已经打开的文件。 下面是一个文本文件操作的示例。 例1:

复制内容到剪贴板 代码: procedure TForm1.Button1Click(Sender: TObject);

相关文档
最新文档