怪事,copy命令出错!该怎么解决
怪事,copy命令出错!我想提取文件fname后缀,例如,设fname是“abcde.dat”,则要提取“.dat”我开始用ExtractFile
怪事,copy命令出错!
我想提取文件fname后缀,例如,设fname是“abcde.dat”,则要提取“.dat”
我开始用ExtractFileExt(fname)来实现,但所得结果是“.da”,不是“.dat”,后面总是少一个字母“t”,
后来我改用
copy(fname,length(fname)-3,4)来实现,但结果也和上面一样!
这是为什么?
[解决办法]
把fname显示出来看看
[解决办法]
[解决办法]我记得楼主总是出现这样的诡异问题啊,楼主你的奖杯是怎么来的啊
[解决办法][解决办法]直接用showmessage(ExtractFileExt(fname))也出错么?
是不是你赋值给某变量,且该变量已限制了长度 ex: aStr:string[3]; 如果这样,你上面两方法都只能得到三个字符
[解决办法]楼主的精神状态堪忧啊
[解决办法]为LZ感到悲哀
[解决办法]ext:=copy(fnm,length(fnm)-3,4); //可能就在这里
如果ext:string ==> .pdb
如果ext:string[3] ==> .pd
不知楼主ext 定义有没有限制了长度.
[解决办法]显然,你那段代码单独测试是不会有问题的。既然你的程度是从BP7的代码移植来的,如果不想大量改动的话,应该严格使用shortstring。也就是,要么程序使用{$H-}指示,要么所有原来的string类型声明为string[255](如果原来的声明是string[xx]则不要改)。
[解决办法]“发现出错的地方和后来做试验并成功的地方,除了地点外,差别只有一点,即出错处的fname是从过程外引入的string,而成功处的fname则是直接赋予的常数字符串,”
那你在引入fname这个string后,首先先showmessage(fname),看一下fname是不是你想象中的fname呢?
[解决办法]还有这种怪事了。那你:
ext := fname;
Delete(ext, 1, length(ext) - 4);
//...
[解决办法]可能你的串包含不可视的字符
[解决办法]逐个输出ord(fname[i])看看有没有不可视的字符,到底几个字符。