写代码千万小心,一个错误困扰我几个小时(100分)

  • 主题发起人 主题发起人 枫晚东园
  • 开始时间 开始时间

枫晚东园

Unregistered / Unconfirmed
GUEST, unregistred user!
自己用API实现文件搜索,开始写出来能用,后来修改了下返回的都是乱码。自己忘了修改的哪里,死活找不出来毛病。
贴下代码:
procedure Find(FDir:PChar);
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:/*
我豁然开朗啊。。当时真想一头撞死算了。

帖子没什么意思,抒发一下忧郁的心情,也希望大家引以为戒
 
有的学习,还有的分接,何乐而不为呢,呵呵,接分
 
就这么几行. 从头看一遍也不用了几个小时吧
 
支持楼主,小心。
有时候偶也有这种不小心。
 
樓主好人,既給分又給經驗
 
楼主是好人!
 
确实深有体会
 
深有同感,有时不小心碰了一下键盘,造成没有编译错误的问题。
 
编译错误倒是好找。
 
不错,提醒了一下
 
不知道 是找哪个文件?
 
打发点呐~~~~
 
我没分了,给点吧.
 
楼主这段代码要去掉"FindClose(Hnd);"方能编译通过(D2007下测试)。

调用:Find('C:/*'),呵呵。
 
精神财富双丰收
 
我也遇到过这种情况,程序虽然简单但是当你走入误区之后,简简单单的错误愣是发现不了,唉,怎么一个"郁闷"满足!!
 
很久没看了,今天结贴。。。
对不住各位,粥少僧多,平均下来分就少了
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
687
import
I
后退
顶部