delphi - 获取程序可执行文件的名称(如 paramstr(0) 中),但在 Delphi 7 中将其作为 Unicode 字符串获取?

标签 delphi unicode delphi-7

我想将文件从自定位复制到另一个位置,如下所示:

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/

相关文章:

delphi - "Stay on top"Delphi XE中的主窗体和模式对话框

delphi - 使用 VMPlayer 是否可以通过编程方式与主机创建共享文件夹?

javascript - 如何在 Chrome 扩展中的浏览器操作中将 Unicode 字符设置为徽章文本?

python-3.x - 为什么我无法将\xDF (ß) 解码为 UTF-8?

multithreading - 图像浏览程序 - 为什么它在线程化后会随机崩溃?

delphi - 向 TBitmap 添加阴影

delphi - Delphi 7 中的类变量

delphi - TDateTimePicker 与 Kind=dtkDate 返回日期属性中的时间分数?

delphi - 从代码中关闭 BDE

c++ - 完全模拟缺失的不同内置类型(特别是 : char16_t and char32_t)