我想将文件从自我位置复制到另一个位置,例如:

var
NewFile        : WideString;
MyOwnLocation  : WideString;
begin
NewFile   := 'C:\mycopy.exe';
// CopyFileW (PWideChar(paramstr(0)), PWideChar(NewFile), false); // ===> doesn't work
MyOwnLocation := paramstr(0);
CopyFileW  (PWideChar(MyOwnLocation), PWideChar(NewFile), false); // ===> works but not sure if Unicode supported...
end;


当我将paramstr(0)复制到WideString时,它可以工作,但是我仍然不确定paramstr(0)是否已经是UNICODE。是否有WindowsAPI可以在wideString中返回文件的当前位置?

感谢帮助 :)

最佳答案

当然。您可以使用GetModuleFileNameW,这是ParamStr(0)内部使用的api的unicode版本:

var
  NewFile: WideString;
  MyOwnLocation: WideString;
  Len: DWORD;
begin
  NewFile := 'C:\mycopy.exe';
  SetLength(MyOwnLocation, 260);
  Len := GetModuleFileNameW(0, PWideChar(MyOwnLocation), Length(MyOwnLocation));
  Win32Check(Bool(Len));
  if GetLastError <> ERROR_INSUFFICIENT_BUFFER then begin
    SetLength(MyOwnLocation, Len);
    CopyFileW (PWideChar(MyOwnLocation), PWideChar(NewFile), false);
  end else
    // handle fail due to insufficient buffer

关于delphi - 获取程序可执行文件的名称(如paramstr(0)一样),但是在Delphi 7中将其作为Unicode字符串获取?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10763243/

10-12 04:01