ShFileOperation 与繁简字体的冲突??(100分)

  • 主题发起人 主题发起人 jiichen
  • 开始时间 开始时间
J

jiichen

Unregistered / Unconfirmed
GUEST, unregistred user!
<br>&nbsp; &nbsp; ShFileOperation 是呼叫 Windows 的 API 来工作,但不知<br>是否还有其他的可呼叫。<br><br>&nbsp; &nbsp; 因为在我的档案中,有一档名为简体字码的档案,当初用 IE <br>去大陆网站存档时未注意到,于是,现在变成使用 TOpenDialog <br>可看见此档(十年江湖一盏灯.txt),而要将它读进来时却发生错误,<br>追踪结果, OpenDialog1.FileName=十年江湖一??.txt<br>故想呼叫 ShFileOperation 这个 API 并使用 RENAME 的语法,<br>将它改成其他名称,以便读取,试验其他档很顺利,但针对此档便<br>不行了。<br><br>&nbsp; &nbsp; 是不是此 API 不支援 UniCode 的关系呢?<br>但 OpenDialog 可看见全貌,是否表示另有其他组 API 可供呼叫?<br><br><br><br>PS:使用了 Windows 下最初阶的记事本,.....,真不可思议,<br>局然可以成功读进!!<br><br>而使用 UltraEdit v7.10 却不行(开启档案对话框依然可见全貌)。<br><br>请高手指教,谢谢!<br><br>使用系统:繁体 Windows2000 、 Delphi 5 (English)<br><br><br><br>以下为程式<br>var<br>&nbsp; &nbsp; ST:TShFileOpStruct;<br>&nbsp; &nbsp; frombuf, tobuf: Array [0..256] of Char;<br>begin<br>&nbsp; fillchar(ST, sizeof(TShFileOpStruct), 0);<br>&nbsp; FillChar( frombuf, Sizeof(frombuf), 0 );<br>&nbsp; FillChar( tobuf, Sizeof(tobuf), 0 );<br>&nbsp; StrPCopy( frombuf, Olds );<br>&nbsp; StrPCopy( tobuf, NewS );<br>&nbsp; <br>&nbsp; <br>&nbsp; with ST do<br>&nbsp; begin<br>&nbsp; &nbsp; Wnd:=PreLoad.Handle;<br>&nbsp; &nbsp; wFunc:=FO_RENAME;<br>&nbsp; &nbsp; pFrom:= @frombuf;<br>&nbsp; &nbsp; pTo:=@tobuf;<br>&nbsp; &nbsp; fFlags:=FOF_NOCONFIRMATION;<br>&nbsp; &nbsp; fAnyOperationsAborted:= False;<br>&nbsp; &nbsp; hNameMappings:= Nil;<br>&nbsp; &nbsp; lpszProgressTitle:= Nil;<br>&nbsp; end;<br>&nbsp; <br>&nbsp; &nbsp; ShFileOperation(ST); //执行命令<br><br>&nbsp; &nbsp; &nbsp; <br>&nbsp;<br>
 
可能是“盏”字的内码比较特殊吧
 
试试WIDECHAR
 
<br>to kucio 兄<br>&gt;可能是「盏」字的内码比较特殊吧<br>我比较认为是 Windows2000 内的程式,如记事本或 WordPad 都已支援<br>UniCode 的关系。<br><br>to 王安鹏 兄<br>&gt;试试WIDECHAR<br>不知要怎么试,因为档名是由 OpenDialog1.FileName 来的,<br>请多指教,谢谢。<br>
 
至今仍无法解决,大家都没有碰到此一问题吗?
 
附加功能 &nbsp; 将问题提前 &nbsp; &nbsp;
 
jiichen:如果还想接着讨论请定期提前自己的帖子,如果不想继续讨论请结束帖子。<br>
 
多人接受答案了。
 
后退
顶部