IOTAProjectからメインソースファイル名を取得するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/2028046

  •  19-09-2019
  •  | 
  •  

質問

少なくとも D2007 以降、プロジェクト ファイルには異なるベース名を持つメイン ソース ファイルを含めることができます。DevExpress のデモではこれを利用します。例えば。UnboundListDemoD11.dproj と UnboundListDemoD12.dproj の両方のメイン ソースとして機能する単一の dpr ファイル UnboundListDemo.dpr があります。

今、私が持っているとしたら、 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: これらの状況のいずれかを作成する方法:

  1. 新しい VCL アプリケーションを作成します。
  2. MyProject.dproj として保存します。
  3. IDE でプロジェクトを閉じます。
  4. Windows エクスプローラーで、MyProject.dproj の名前を MyProjectD11.dproj に変更します。
  5. 今後は必ず MyProjectD11.dproj を開いてください。 ない MyProject.dpr!
役に立ちましたか?

解決

あなたは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;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top