delphi打开文件的各种方法?

目前发现有两种方法:方法1,定义一个文件变量F,assign(F,fileName);reset(F,1);方法2,定义一个文件句柄,fHandle,fHandle:=F... 目前发现有两种方法:

方法1,定义一个文件变量F,assign(F,fileName);reset(F,1);

方法2,定义一个文件句柄,fHandle,
fHandle:=FlieOpen(fileName,fmReadandWrite);

我的问题是,两种方法都可以读、写文件,而且两种方法的实现各种功能的函数和过程名称很类似,如seek(),fileseek();fileopen(),openfile();好像就非把你搞头晕一样。那为什么还要搞两种方法?他们有什么区别?

肯定有区别,只是我研究的不深。
展开
 我来答
糖糖寳寳
推荐于2018-05-14 · TA获得超过6.4万个赞
知道大有可为答主
回答量:1.8万
采纳率:92%
帮助的人:3991万
展开全部
  第一种方法,使用SelectDirectory 函数 ,在ShellApi中
  procedure TForm2.BtSelectPathClick(Sender: TObject);
var
strCaption,strDirectory:String;
wstrRoot:WideString;
begin
strCaption:='这是浏览文件夹的说明文字,可以根据需要进行书写。'
+#13#10+'一般二行文字就满了。';
//该参数是浏览文件夹窗口的显示说明部分
wstrRoot:='';
//这个参数表示所显示的浏览文件夹窗口中的根目录,默认或空表示“我的电脑”。
SelectDirectory(strCaption,wstrRoot,strDirectory);
EdLocalPath.Text:=strDirectory;
end;
  
  第二种方法
  要求:利用Win32 API SHBrowseForFolder开启一个选择文件目录的对话框,预先定位到默认的目录,最后返回所选择的结果,如果没有进行选择(即单击“取消”结束选择)则返回空''。
代码如下:(以下两个函数定义需要在uses中引入两个单元ShlObj,Windows;)
function BrowseCallbackProc(Wnd: HWND; uMsg: UINT; lParam, lpData: LPARAM): Integer stdcall;
begin
case uMsg of
BFFM_INITIALIZED: SendMessage(Wnd, BFFM_SETSELECTION, 1, lpData);
end;
Result := 0;
end;
  function BrowsFolder(const Folder: string): string;
var
TitleName: string;
lpItemID: PItemIDList;
BrowseInfo: TBrowseInfo;
DisplayName: array[0..MAX_PATH] of char;
TempPath: array[0..MAX_PATH] of char;
begin
Result := Folder;
FillChar(BrowseInfo, sizeof(TBrowseInfo), #0);
BrowseInfo.hwndOwner := GetActiveWindow;
BrowseInfo.pszDisplayName := @DisplayName;
TitleName := '请选择一个目录';
BrowseInfo.lpszTitle := PChar(TitleName);
BrowseInfo.ulFlags := BIF_RETURNONLYFSDIRS;
BrowseInfo.lpfn := BrowseCallbackProc;
BrowseInfo.lParam := Integer(PChar(Folder));
lpItemID := SHBrowseForFolder(BrowseInfo);
if Assigned(lpItemId) then
begin
SHGetPathFromIDList(lpItemID, TempPath);
GlobalFreePtr(lpItemID);
Result := string(TempPath);
end
else
Result:='';
end;
函数BrowsFolder是主体,传入参数即默认的目录,返回值即选择的结果。
  BrowseCallbackProc是由SHBrowseForFolder执行时需要的回调(Call Back)函数。在这个函数中,截取了BFFM_INITIALIZED消息,在目录选择对话框初始化的时候,向对话框发送一个BFFM_SETSELECTION消息,选中默认的目录。
TheFiend
推荐于2016-10-07 · TA获得超过625个赞
知道大有可为答主
回答量:1346
采纳率:0%
帮助的人:1221万
展开全部
assign(F,fileName);reset(F,1);
这个是pascal的文件操作方式

fHandle:=FlieOpen(fileName,fmReadandWrite);
这个是windows API的方式.

区别基本 没有,用pascal的操作方式把.
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友1b932d7
2009-09-27 · TA获得超过816个赞
知道小有建树答主
回答量:455
采纳率:0%
帮助的人:423万
展开全部
那种都行,能用就好
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yeye55
2009-09-27 · TA获得超过715个赞
知道小有建树答主
回答量:412
采纳率:0%
帮助的人:408万
展开全部
最好还是用TFileStream
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式