下面这个简单的C++语句怎么翻译成DELPHI,简单拉,……快来抢分(100分)

  • 主题发起人 主题发起人 anydelphi
  • 开始时间 开始时间
A

anydelphi

Unregistered / Unconfirmed
GUEST, unregistred user!
wchar_t UserName [0x400];
memset(UserName,0,sizeof (UserName));
GetEnvironmentVariableW(L"USERNAME",UserName,0x400);
我是这样理解的,可惜编译没有通过
UserName : array [0..$400] of WideChar;
FillChar(UserName,Sizeof (UserName),#0);
GetEnvironmentVariableW(PWideChar('USERNAME'),UserName,$400);
 
问题出最后一个语句上面
GetEnvironmentVariableW(PWideChar('USERNAME'),UserName,$400);
 
var
UserName : array [0..$400] of WideChar;
begin
FillChar(UserName,Sizeof (UserName),#0);
GetEnvironmentVariableW('USERNAME',UserName,$400);
 
用 Unicode 得不到结果,以下反而能得到结果:
procedure TForm1.Button1Click(Sender: TObject);
var
UserName : array [0..$400] of Char;
begin
FillChar(UserName,Sizeof (UserName),#0);
GetEnvironmentVariable('path',UserName,$400);
showmessage(username);
end;
 
to jsxjd
改成:
GetEnvironmentVariableW('USERNAME',UserName,$400);
出现以下错误:((
Error:There is no overloaded version of 'GetEnvironmentVariableW'
that can be called with these arguments
 
这是类型不匹配,你可能声明了 userName: 是 char
而 .........W 的参数是 Uncode字符。
^<<<<<<<<<<<<<<< 把“W”去掉
我试了一下,在VC下结果也一样,用Unicode得不到结果。
 
我的代码如下,还是出现了错误提示:(
Error:There is no overloaded version of 'GetEnvironmentVariableW'
that can be called with these arguments
另外这个程序必须用到WideChar的!!Char不行哟,到底怎么办??
UserName : array [0..$400] of WideChar;
FillChar(UserName,Sizeof (UserName),#0);
GetEnvironmentVariableW('USERNAME',UserName,$400);
 
不可能出错,我这边好好的,这个函数是不需要自己声明的,库中有声明。
procedure TForm1.Button1Click(Sender: TObject);
var
UserName : array [0..$400] of WideChar;
begin
FillChar(UserName,Sizeof (UserName),#0);
GetEnvironmentVariableW('USERNAME',UserName,$400);
showmessage(username);
end;

用不用 widechar 应该问题不在,
而且在VC下的结果也是这样!
 
问题解决拉:))谢谢哟,不过我用的别的方法!灵感从你哪里获得的……
var
UserName : array [0..$400] of Char;
begin
FillChar(UserName,Sizeof (UserName),#0);
GetEnvironmentVariable('path',UserName,$400);
……
关键是以下变化:★★
string(PWideChar(x)=username;

谢谢了,送分拉!很爽吧!!
 
多人接受答案了。
 
后退
顶部