怎么得到的主要来源文件的名字从一个IOTAProject?
题
由于至少D2007一个项目文件可以有一个主要来源文件与不同基地的名称。DevExpress演示使使用这样的:E.g。有一个单一的朝文件UnboundListDemo.朝供应的主要来源于两UnboundListDemoD11.dproj和UnboundListDemoD12.dproj.
现在如果我有一个 Project: IOTAProject
然后 Project.FileName
返回dproj文件的名称。我找不到一个"官方"的方式得到dpr的文件名称。是否有任何?一个可以得到它从分析的dproj文件(见 在这里,)但是我更喜欢一个ToolsAPI方法。
编辑: 我想出了这个代码的基础上 乔恩的答案:
function IsProjectSource(const FileName: string): Boolean;
begin
Result := IsDpr(FileName) or IsBpr(FileName) or IsPackage(FileName);
end;
function GxOtaGetProjectFileName2(Project: IOTAProject; NormalizeBdsProj: Boolean = False): string;
var
i: Integer;
Module: IOTAModule;
Editor: IOTAEditor;
begin
Result := '';
if Assigned(Project) then begin
Result := Project.FileName;
if NormalizeBdsProj and IsBdsprojOrDproj(Result) then begin
Module := Project as IOTAModule;
for i := 0 to Module.ModuleFileCount - 1 do
begin
Editor := Module.ModuleFileEditors[i];
if IsProjectSource(Editor.FileName) then begin
Result := Editor.FileName;
Exit;
end;
end;
end;
end;
end;
哪里是...惯例是从 GX_GenericUtils.
编辑2: 如何创建这个情况:
- 创造新的VCL应用程序。
- 保存如MyProject.dproj.
- 接近项目在IDE。
- 在Windows资源管理器,重新命名MyProject.dproj到MyProjectD11.dproj.
- 从现在一定要打开MyProjectD11.dproj, 不 MyProject.朝!
解决方案
如果你迭代了编辑上的IOTAProject实例,你可能会找到dpr.
var
Module: IOTAModule;
Project: IOTAProject;
Editor: IOTAEditor;
begin
// Set Project Here....
Module := Project as IOTAModule;
for I := 0 to Module.ModuleFileCount - 1 do
begin
Editor := Module.ModuleFileEditors[I];
end;
end;
不隶属于 StackOverflow