質問

基本的なWindowsアプリケーションとしてコンパイルするための構成を持つWindowsサービスアプリケーションを構築しています。exeのメインプロジェクトファイルには、プロジェクトがサービスアプリケーションとしてコンパイルされているのか、Windowsフォームアプリケーションとしてコンパイルされているのかを決定する条件が含まれています。

問題は、プロジェクトコードを変更するようなことをすると、コードが破壊されて壊れてしまうことです。たとえば、Application.Initialize;を示す行はAppliApplication.Initialize;になり、{$R *.RES}を含む行は、S}に切り詰められ、私の条件のほとんどが削除されます。

この問題を克服する方法があるのか、何かトリックがあるのか、それともただニヤリと笑って耐えなければならないのか、疑問に思っています。

そのままにしておきたいので、以下のファイルをご覧ください... ジェネラコディセタグプレ

役に立ちましたか?

解決

Davidが言うように、あなたはdprがそれ自身のプライベートな裏庭であると信じているIDEで立ち往生しています。最も簡単な解決策は、すべてを別のユニットに入れ、dprのuses句から条件を削除することです。FastMMは、サービスバージョンだけでなく、テストアプリでも役立ちます。また、vcl.formsとvcl.svcMgrは、その別のユニットで区別できます。

dprは次のように削減されます: ジェネラコディセタグプレ

そして、メインアプリケーションユニットはdprから残りのコードを取得します: ジェネラコディセタグプレ

他のヒント

簡単な答えは、別のプロジェクトを作成し、それをスタンドアロンバージョンとして使用することです。これは私が自分のサービスで行っていることであり、各モードに合わせて他の条件を使用できることを意味します。

Yes, the IDE does that and always has done. There is no known way to stop it behaving like that. You are just going to have to suck it up.

I have similar conditionals and the way I deal with them is to use my revision control system to help me, at commit time, undo the changes that the IDE makes. So whenever I check in a .dpr file I review the differences and revert the bogus ones.

I also try to add and remove units from the project by editing the .dpr file rather than letting the IDE do it. This tends to reduce the incidence rate of the bogus mods.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top