识别运行Delphi 7程序的服务器

时间:2013-03-08 00:59:50

标签: delphi delphi-7

已在各种服务器上部署了Delphi 7程序的单独版本。 为了帮助解决报告的错误,我正在尝试编写一个函数来识别程序运行的服务器。

以下代码获取本地计算机名称。

sbAll.Panels.Items[1].Text := 'Server: ' + GetEnvironmentVariable('COMPUTERNAME');

假设程序的绝对路径为:

\\Swingline\Programs\Folder\Program.exe

如何运行计算机,如何让它返回Server: Swingline

3 个答案:

答案 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。我寻找其他方法,但我在该部门的知识不足以深入挖掘真正的机器名称。这可能是可能的,但我只是没有看到它。