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 파일을 구문 분석하여 얻을 수 있습니다 ( 여기) 그러나 나는 도구 Sapi 방법을 선호합니다.


편집하다: 나는이 코드를 기준으로 생각했다 존의 대답:

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 Explorer에서 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