udf问题,请各位大虾指点,在线等
{
这是用Delphi写的udf, 功能:返回传入目录下的所有文件名列表
(Dll在Delphi环境下测试正常.)
path: 传入目录。
FilterExt: 用来过滤的扩展名
返回:返回的文件名字符串,以'|'做分隔
}
function GetFileName(Path: String; FilterExt:String): String;
var
sr: TSearchRec;
ri: integer;
FileName, FileExt, s: String;
begin
s:= '';
if RightStr(Path, 1) <> '\' then
Path:= Path + '\';
if not DirectoryExists(Path) then Exit;
Path:= Path + '*.*';
ri:= FindFirst(Path, faArchive, Sr);
while (ri = 0) do
begin
//取文件名和文件扩展名
FileName:= ExtractFileName(Sr.Name);
FileExt:= ExtractFileExt(FileName);
if (FilterExt <> '') then
begin
if LeftStr(FilterExt,1) <> '.' then
FilterExt:= '.' + FilterExt;
if FilterExt = FileExt then
s:= s + FileName + '|';
end
else
s:= s + FileName + '|';
ri:= FindNext(Sr);
end;
Result:= s;
end;
exports
GetFileName;
//这是注册udf的语句:
DECLARE EXTERNAL FUNCTION GETFILENAMES
VARCHAR(255) CHARACTER SET NONE, VARCHAR(8) CHARACTER SET NONE
RETURNS VARCHAR(1200) CHARACTER SET NONE FREE_IT
ENTRY_POINT 'GetFileName' MODULE_NAME 'GetFNs.dll';
注册成功后,测试:
select GETFILENAMES('D:\',') from rdb$database
出错:
connection lost to databse
然后将interbase数据库服务停掉, 需要重启服务.