gpt4 book ai didi

delphi - 使用OTA返回特定平台的库路径

转载 作者:行者123 更新时间:2023-12-03 15:51:39 26 4
gpt4 key购买 nike

我想获取特定平台(win32、win64、OSx)的库路径。但是,当我询问库路径时,OTA 只会返回 OSx 库路径。

代码是:

EnvironmentOptions := (BorlandIDEServices as IOTAServices).GetEnvironmentOptions;
Paths.Text := EnvironmentOptions.Values['LibraryPath'];

我注意到一件奇怪的事情。当我询问键值时,我得到 3 LibraryPath。

当我这样做时:

EnvironmentOptions.GetOptionNames

我得到:

... A lot of values 
'ClassCompletionBooleanAddInterface', tkEnumeration
'LibraryPath', tkLString --> 1
'PackageDPLOutput', tkLString
... lot of values
'LibraryPath', tkLString --> 2
'PackageDPLOutput', tkLString
... lot of values
'HPPOutputDirectory', tkLString
'LibraryPath', tkLString --> 3
'PackageDPLOutput', tkLString
... lot of values

我认为每个键必须代表我可能的目标之一(win32、win64、OSx)。但由于我只能调用 Key 的名称的值,因此它总是返回它找到的第一个键,在我的例子中它是 OS X。

最佳答案

我不会接受我的答案是正确的,这只是一个选项。我没有找到直接在 OTA 中执行此操作的可能性,因此我在注册表中查找它:

procedure GetLibraryPath(Paths: TStrings; PlatformName: string);
var
Svcs: IOTAServices;
Options: IOTAEnvironmentOptions;
Text: string;
List: TStrings;
ValueCompiler: string;
RegRead: TRegistry;
begin
Svcs := BorlandIDEServices as IOTAServices;
if not Assigned(Svcs) then Exit;
Options := Svcs.GetEnvironmentOptions;
if not Assigned(Options) then Exit;

ValueCompiler := Svcs.GetBaseRegistryKey;

RegRead := TRegistry.Create;
List := TStringList.Create;
try
if PlatformName = '' then
Text := Options.GetOptionValue('LibraryPath')
else
begin
RegRead.RootKey := HKEY_CURRENT_USER;
RegRead.OpenKey(ValueCompiler + '\Library\' + PlatformName, False);
Text := RegRead.GetDataAsString('Search Path');
end;

List.Text := StringReplace(Text, ';', #13#10, [rfReplaceAll]);
Paths.AddStrings(List);

if PlatformName = '' then
Text := Options.GetOptionValue('BrowsingPath')
else
begin
RegRead.RootKey := HKEY_CURRENT_USER;
RegRead.OpenKey(ValueCompiler + '\Library\' + PlatformName, False);
Text := RegRead.GetDataAsString('Browsing Path');
end;

List.Text := StringReplace(Text, ';', #13#10, [rfReplaceAll]);
Paths.AddStrings(List);
finally
RegRead.Free;
List.Free;
end;
end;

关于delphi - 使用OTA返回特定平台的库路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38826629/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com