怎样使自己的程序支持命令行参数?(54分)

  • 主题发起人 主题发起人 花 儿
  • 开始时间 开始时间
也许是98对长文件名支持不是特别好吧?
不过不应该取得文件名为空呀,至少应该有一部分的!
可以找函数变成短文件名(8+3的)
Function GetShortFilename(LongFilename: String): String;
var
; ShortFile: pChar;
begin
; ShortFile := StrAlloc(MAX_PATH + 1);
; Try
; ; if GetShortPathName(pChar(LongFilename), ShortFile, MAX_PATH + 1) = 0 then //转换错误
; ; ; Raise EConvertError.Create
; ; ; ; ('GetShortFilename: ' + SysErrorMessage(GetLastError));
; ; Result := String(ShortFile);
; Finally
; ; StrDispose(ShortFile);
; end;
end;
 
yzhshi:
首先谢谢你了。
我在WinMe下的 我的文档 底下的Txt文件(比如:C:/My Documents/46.txt)
我双击以后,发现FileName变量变成"C:/My."(注意了,My后面有一个点!)
然后当然会报错了:)我实在不知道这是什么原因:)

总结如下:
C:/My Documents/4 6.txt ; ; 打不开。
C:/My Documents/46.txt ; ; 也不可以打开。
F:/Data/46.txt ; ; ; ; ; ;可以打开。
F:/Data/4 6.txt ; ; ; ; ; 不可以打开。
总之,有空格就不能打开了:)
 
把注册表里的
F:/记事本/Project1.exe %1
改成
F:/记事本/Project1.exe "%1"
试试
 
GOHKI,:
问题解决了,可以告诉我是什么原因吗?:)
 
噢,是了。
应该这样,对于长文件名,就需要加上"%1",否则Windows不认。
在Autoexec.bat里设置路径也是这样。
 
还有,出现my.,你根据param count取其他的param,应该能够拼写成完整的路径。
 
谢谢各位大虾了:)
结分算账!!!!:)
 
多人接受答案了。
 
后退
顶部