iotaproject에서 기본 소스 파일 이름을 얻는 방법은 무엇입니까?
문제
최소한 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 : 이러한 상황 중 하나를 만드는 방법 :
- 새 VCL 응용 프로그램을 만듭니다.
- myProject.dproj로 저장하십시오.
- IDE에서 프로젝트를 닫습니다.
- Windows Explorer에서 MyProject.dproj 이름을 MyProjectd11.dproj로 바꾸십시오.
- 지금부터 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;
제휴하지 않습니다 StackOverflow