已在各种服务器上部署了Delphi 7程序的单独版本。 为了帮助解决报告的错误,我正在尝试编写一个函数来识别程序运行的服务器。
以下代码获取本地计算机名称。
sbAll.Panels.Items[1].Text := 'Server: ' + GetEnvironmentVariable('COMPUTERNAME');
假设程序的绝对路径为:
\\Swingline\Programs\Folder\Program.exe
如何运行计算机,如何让它返回Server: Swingline
?
答案 0 :(得分:4)
您可以使用Application.ExeName,用斜杠拆分并获取第二个元素......
答案 1 :(得分:1)
根据@ Zdravko的建议,这是我最终使用的代码。
List := TStringList.Create;
try
ExtractStrings(['\'], [], PChar(Application.ExeName), List);
if (List.Text[2] = ':') then // On local computer, Ex. J:\Programs\Foo.exe
sbAll.Panels.Items[1].Text := 'Server: ' + ntComputer.ComputerName
else // In the case of \\Swingline\Programs\Folder\Program.exe
sbAll.Panels.Items[1].Text := 'Server: ' + UpperCase(List[0]);
finally
List.Free;
end;
答案 2 :(得分:0)
您可以在不使用字符串列表的情况下执行此操作...
function ExeLocation: String;
var
S: String;
begin
S:= ParamStr(0);
if Copy(S, 2, 2) = ':\' then begin
Result:= GetEnvironmentVariable('COMPUTERNAME');
end else
if Copy(S, 1, 2) = '\\' then begin
Delete(S, 1, 2);
Result:= Copy(S, 1, Pos('\', S)-1);
end;
end;
请记住,如果您通过计算机的IP地址引用该文件,则只会返回该IP地址。例如,\\192.168.1.123\SomeFolder\SomeFile.exe
只会返回192.168.1.123
。我寻找其他方法,但我在该部门的知识不足以深入挖掘真正的机器名称。这可能是可能的,但我只是没有看到它。