2016-11-30 2 views
0

私は自分のアプリケーションをネイティブコンソールアプリケーションに変換しようとしていますが、私はそれを行う前に、コードを初期化する場所と、ユーザーがプログラムを閉じるときにコードを置く必要がある(CTRL + C)必要があります。例コードコンソールアプリケーションでTForm1.FormCreate()とTForm1.FormCloseQuery()と同等のものは何ですか?

procedure TForm1.FormCreate(Sender: TObject); 
begin 

    InitializeCriticalSection(CriticalSection1); 
    DecimalSeparator:='.'; 
    programdir:=ExtractFileDir(application.ExeName); 

    if ParamCount>1 then 
    begin 
    InputFile:=ParamStr(1); 
    OutputFile:=ParamStr(2); 
    end; 

end; 

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); 
begin 

    if ProccesSupervisor<>nil then 
    begin 
    ProccesSupervisor.Terminate; 
    ProccesSupervisor.WaitFor; 
    ProccesSupervisor.Free; 
    end; 

    DeleteCriticalSection(CriticalSection1); 

end; 
+0

これらはコンソールアプリケーションには存在しません。 CheckSynchronize()でループが必要で、キーボード入力を確認します。 – whosrdaddy

+0

なぜクリーンアップする必要がありますか?なぜキットはシステムにプロセスを終了させるのか。 –

答えて

4

多くの目的で、メインとセカンダリモジュールのInitialization and Finalizationセクションを使用できます。 Ctrlキーを押しながらCは、あなたは窓のアプリケーションによって提供されるいくつかの可能性がコンソールアプリケーションでは利用できない、といくつかの他の可能性を得るために、あなたがそれらを整理する必要があることSetConsoleCtrlHandlerルーチン(example

注意を設定する必要が治療に

" (例えば、OLE初期化、メッセージサイクルなど)

+1

いいえ。終了はctrl + cで実行されません –

関連する問題