//SE_File.dll 插件函数库可提供以下函数功能
//v1.01: 添加SEFileSize, GetDirFiles, GetSpecialDir函数
//v1.00: 随脚本大师7.1一起发布的初始版本

::SEFileCreate
function SEFileCreate(fn:string): integer;
创建以fn为名字的文件，以备后续的文件读写操作。
如果文件创建成功，则返回值为该文件句柄，若创建文件失败，则返回值为-1。
注意：如果已经存在同名的文件，则覆盖之。
举例：set h=SEFileCreate("c:\test.txt")

::SEFileOpen
function SEFileOpen(fn:string): integer;
打开文件名为fn的文件，以备后续的文件读写操作。
如果打开文件成功，则返回值为该文件句柄，若打开文件失败，则返回值为-1。
举例：set h=SEFileOpen("c:\test.txt")

::SEFileClose
procedure SEFileClose(Handle:integer);
关闭已经打开的文件。
Handle:文件操作句柄，可由SEFileCreate或SEFileOpen函数的返回值取得。
举例：do SEFileClose(h)

::SEFileSize
function SEFileSize(Handle:integer): integer;
获取文件的大小，返回文件的字节数
Handle:文件操作句柄，可由SEFileCreate或SEFileOpen函数的返回值取得。
举例：
set x=SEFileSize(Handle)

::SEFileSeek
function SEFileSeek(Handle:integer; Offset:integer; Origin:integer): integer;
定位当前的文件读写指针。
Handle:文件操作句柄，可由SEFileCreate或SEFileOpen函数的返回值取得。
Offset:文件指针相对于Origin的偏移量。
Origin:文件指针定位的参考位置，可以有三种取值：0：文件开始；1：当前指针位置；2：文件末尾。
例如：
SEFile(handle,3,1)  表示将文件操作指针从当前位置向后移动3个字节位置。
SEFile(handle,-3,2) 表示将文件操作指针定位到文件末尾之前的3个字节处。
SEFile(handle,0,0)  表示将文件操作指针定位到文件开头处。
如果定位成功，返回值为新的文件指针位置，如果失败，则返回-1。


::SEFileRead
function SEFileRead(Handle:integer; Size:integer): string;
读取文件内指定长度的内容。
Handle:文件操作句柄，可由SEFileCreate或SEFileOpen函数的返回值取得。
Size:读取的内容长度。
如果读取成功，返回值为实际读取的内容字符串，如果失败，则返回空字符串。
举例：set s=SEFileRead(h,3)

::SEFileReadLn
function SEFileReadLn(Handle:integer): string;
读取文件指针之后一行文本的内容。
Handle:文件操作句柄，可由SEFileCreate或SEFileOpen函数的返回值取得。
如果读取成功，返回值为实际读取的内容字符串，如果失败，则返回空字符串。
举例：set s=SEFileReadLn(h)

::SEFileWrite
function SEFileWrite(Handle:integer; str:string): integer;
写入文件内容。此函数将从当前文件指针处开始写入内容，如果当前指针之后已经有内容，则会被覆盖。
Handle:文件操作句柄，可由SEFileCreate或SEFileOpen函数的返回值取得。
str:需要写入的内容。
如果写入成功，返回值为实际写入的字节数，如果失败，则返回-1。
举例：set i=SEFileWrite(h,"abcde")

::SEFileWriteLn
function SEFileWriteLn(Handle:integer; str:string): integer;
写入一行文件内容。此函数与上面的SEFileWrite函数功能基本相同，只是会自动在写入的str后加上回车换行符号。
举例：set i=SEFileWriteLn(h,"abcde")

::SEFileAppend
function SEFileAppend(Handle:integer; str:string): integer;
在文件末尾添加内容。此函数总是在文件末尾处添加内容，因此不会出现内容被覆盖的问题。
Handle:文件操作句柄，可由SEFileCreate或SEFileOpen函数的返回值取得。
str:需要添加的内容。
如果添加成功，返回值为实际添加的字节数，如果失败，则返回-1。
举例：set i=SEFileApend(h,"ABCDE")

::SEFileAppendLn
function SEFileAppendLn(Handle:integer; str:string): integer;
在文件末尾添加一行内容。此函数与上面的SEFileAppend函数功能基本相同，只是会自动在添加的str后加上回车换行符号。
举例：set i=SEFileAppendLn(h,"abcde")

::GetCurrentDir
function GetCurrentDir():string;
获取主程序当前环境下所在的当前目录
举例：set s=GetCurrentDir()

::GetExePath
function GetExePath():string;
获取主程序所在目录
如果是用脚本大师执行脚本，返回的是脚本大师主程序完整路径
如果是打包后执行的脚本，返回的是打包后EXE主程序所在完整路径
举例：set s=GetExePath()

::GetExeFileName
function GetExeFileName():string;
获取主程序文件名
如果是用脚本大师执行脚本，返回的是脚本大师主程序完整路径和文件名名
如果是打包后执行的脚本，返回的是打包后EXE主程序所在完整路径和文件名
举例：set s=GetExeFileName()

::ChangeDir
procedure ChangeDir(NewDir:string);
切换当前环境的目录为指定的NewDir
举例：do ChangeDir("c:\")

::ForceDir
function ForceDir(Dir:string):integer;
强制创建Dir指定的目录，包括这个路径的从根路径到最高层路径的所有中间目录
如果中间的任意目录不存在，则尝试自动创建
如果Dir目录成功创建，则返回1，否则返回0
举例：
do ForceDir("c:\abc\def\ccc\aaa\ddd\")  -> 结果就是创建了"c:\abc\def\ccc\aaa\ddd\"及其中间所有可能原本不存在的目录

::DeleteFile
function DeleteFile(fileName:string): integer;
尝试删除指定文件，如果成功返回1，否则返回0
举例：set i=DeleteFile("c:\test.txt")

::DirectoryExists
function DirectoryExists(Dir:string): integer;
判断指定的目录Dir是否存在，存在的话返回1，否则返回0
举例：set i=DirectoryExists("c:\Windows")

::FileExists
function FileExists(FileName:string): integer;
判断指定的文件FileName是否存在，存在的话返回1，否则返回0
举例：set i=FileExists("c:\test.txt")

::DeleteDir
function DeleteDir(Dir:string): integer;
删除指定的目录及其所有子目录，如果成功删除，返回1，否则返回0
举例：set i=DeleteDir("c:\temp\test")

::RenameFile
function RenameFile(OldName:string; NewName:string): integer;
将指定的文件OldName改名为NewName，如果改名成功，则返回1，否则返回0
说明：此函数不但可以重命名文件，也可以重命名文件夹
举例：set i=RenameFile("c:\test.txt","c:\test1.txt")

::CopyFile
function CopyFile(ExistsFile:string; NewFile:string; FailIfExists:integer): integer;
将指定的文件ExistsFile复制为另一个文件NewFile, 如果复制成功，则返回1，否则返回0
FailIfExists表示如果NewFile已经存在，是否覆盖，如果为1，表示不覆盖，如果为0，表示覆盖已存在文件
举例：set i=CopyFile("c:\test.txt","c:\test1.txt")

::ExtractFilePath
function ExtractFilePath(FileName:string): string;
获取指定文件FileName的路径部分字符串，不含文件名
举例：set s=ExtractFilePath("c:\temp\test.txt")

::ExtractFileName
function ExtractFileName(FileName:string): string;
获取指定文件FileName的文件名部分字符串，不包含路径
举例：set s=ExtractFileName("c:\temp\test.txt")

::ExtractFileExt
function ExtractFileExt(FileName:string): string;
获取指定文件的后缀名，后缀名一般以"."开头，如".txt"
举例：set s=ExtractFileExt("c:\temp\test.txt")

::ChangeFileExt
function ChangeFileExt(FileName:string; NewExt:string): string;
将指定的文件名FileName的字符串中原任意后缀名替换为新的后缀名NewExt，返回值为替换了后缀名的文件名
注意，此函数仅仅对文件名字符串进行了处理，而没有对实际的文件进行任何改名动作
举例：
set fn=ChangeFileExt("c:\111.xls",".txt")   ->  fn="c:\111.txt"  ，但实际的111.xls文件并没有被改名。

::GetDirFiles
function GetDirFiles(Dir:string; Mask:string; IncludeSubDir:integer): string;
获取指定目录中所有的文件的全路径名，每个文件名之间使用回车换行进行分隔，因此后续可使用Split函数将每一个文件名保存至一个数组。
Dir: 目标路径，此函数将获取该路径下所有符合条件的文件名
Mask: 文件匹配条件，可以指定只返回符合条件的文件名
IncludeSubDir: 指定是否包含子目录
举例：
var s=""
var Files=""
var i=0
set s=GetDirFiles("c:\","*.bmp",1)
set Files=Split(s,AsciiToChar(13)+AsciiToChar(10))
set i=LBound(Files)
while i<=UBound(Files)
  do ShowMsg(Files[i])
  set i=i+1
endwhile

::GetSpecialDir
function GetSpecialDir(DirName:string): string;
获取指定类型的目录路径
DirName为目录类型名称，可能的取值如下：
"Temp" : 系统临时目录
"System" : 系统目录，如c:\windows\system32
"Windows" : windows目录，如: c:\windows
"DeskTop" : 桌面目录
"MyDocument" : 我的文档目录
"ProgramGroups" : 程序组目录
"Recent" : 最近访问文档目录
"SendTo" : "发送到"目录
"Favorites" : IE的收藏目录
"StartUp" : 启动目录
"StartMEnu" : 开始菜单目录
"Fonts" : 字体目录
"Templates" : 文档模板目录
举例：set s=GetSpecialDir("DeskTop")