如何把%Systemroot%换成"C:/Winnt"?(50分)

  • 主题发起人 主题发起人 Milpas
  • 开始时间 开始时间
M

Milpas

Unregistered / Unconfirmed
GUEST, unregistred user!
有没有API?
 
这种情况恐怕要在程序中自己对%Systemroot%的字符串作解释。
 
Memo1.Lines.Add(GetEnvironmentVariable('systemroot'));
 
实现方式
var
i,k:integer;
temp1,temp2,temp3:string;
begin
temp1:=ansilowercase('%Systemroot%/abc/sdfks.exe');
temp2:=ansilowercase('%systemroot%');
temp3:='c:/winnt';
i:=pos(temp2,temp1);
if i>0 then
begin
delete(temp1,i,length(temp2));
insert(temp3,temp1,i);
end;
end;
这样,你无论大小写不一致,temp2在temp1中的什么位置都可以得到一个转化后的目录路径。
 
xianjun是(接近)正确答案,,不过他有点错了

var k:array[0..1023] of char;
begin
getenvironmentvariable('systemroot',k,1024);
showmessage(k);
end;
 
呵呵,这是全部的
procedure TForm1.Button1Click(Sender: TObject);
var
p : pChar;
begin
Memo1.Lines.Clear;
Memo1.WordWrap := false;
{$IFDEF WIN32}
p := GetEnvironmentStrings;
{$ELSE}
p := GetDOSEnvironment;
{$ENDIF}
while p^ <> #0 do begin
Memo1.Lines.Add(StrPas(p));
inc(p, lStrLen(p) + 1);
end;
{$IFDEF WIN32}
FreeEnvironmentStrings(p);
{$ENDIF}
end;
 
to 淡淡的笑:
你调用的是Windows的API, 我用的是SysUtils单元里的函数,所以没错。[:D]
 
谢谢各位,没时间来结贴
 
后退
顶部