枫
枫晚东园
Unregistered / Unconfirmed
GUEST, unregistred user!
自己用API实现文件搜索,开始写出来能用,后来修改了下返回的都是乱码。自己忘了修改的哪里,死活找不出来毛病。
贴下代码:
procedure Find(FDirChar);
var
fd : WIN32_FIND_DATA;
Hnd : THandle;
Stop : Boolean;
begin
Stop := False;
Hnd := FindFirstFile(FDir, fd);
if Hnd = -1 then
if GetLastError = ERROR_NO_MORE_FILES then messagebox(0,'没有文件!','Test',MB_OK);
MessageBox(0,fd.cFileName ,'Test',MB_OK);
While not Stop do begin
if FindNextFile(Hnd, fd) Then
MessageBox(0,fd.cFileName ,'Test',MB_OK)
else if GetLastError = ERROR_NO_MORE_FILES then begin
MessageBox(0,'没有文件了' ,'Test',MB_OK);
Stop := True;
end;
end;
FindClose(Hnd);
end;
现在我传入一个值'C:/',您认为这个代码对了吗?错!返回的是乱码。
由于程序最早参考的是一段C代码,于是返回去检查编译这段代码,结果发现这一句:
strcat(filePathName, "*")
//在filePathName后面附加一个*,比如原来是C:/,现在是C:/*
我豁然开朗啊。。当时真想一头撞死算了。
帖子没什么意思,抒发一下忧郁的心情,也希望大家引以为戒
贴下代码:
procedure Find(FDirChar);
var
fd : WIN32_FIND_DATA;
Hnd : THandle;
Stop : Boolean;
begin
Stop := False;
Hnd := FindFirstFile(FDir, fd);
if Hnd = -1 then
if GetLastError = ERROR_NO_MORE_FILES then messagebox(0,'没有文件!','Test',MB_OK);
MessageBox(0,fd.cFileName ,'Test',MB_OK);
While not Stop do begin
if FindNextFile(Hnd, fd) Then
MessageBox(0,fd.cFileName ,'Test',MB_OK)
else if GetLastError = ERROR_NO_MORE_FILES then begin
MessageBox(0,'没有文件了' ,'Test',MB_OK);
Stop := True;
end;
end;
FindClose(Hnd);
end;
现在我传入一个值'C:/',您认为这个代码对了吗?错!返回的是乱码。
由于程序最早参考的是一段C代码,于是返回去检查编译这段代码,结果发现这一句:
strcat(filePathName, "*")
//在filePathName后面附加一个*,比如原来是C:/,现在是C:/*
我豁然开朗啊。。当时真想一头撞死算了。
帖子没什么意思,抒发一下忧郁的心情,也希望大家引以为戒