いつもお世話になっております。
実行ファイルをサーバーにおいて、ネットワーク経由で起動すると、
起動時にフォームのタイトルバーを含めた枠が表示され、ほんの少し
遅れてフォームの内部が表示されます。
このずれを直す方法はないでしょうか。
この実行ファイルはボタン1つのフォームで、サイズは400K弱で、
ネットワークは100baseです。
上記の件に関係して、システムの動作環境について少し質問ですが、
現在開発中のシステムは、クライアントサーバー型アプリケーションのクライアントプログラムをクライアントにインストールせずにサーバー側において、ショートカットで起動するという方法をとっております。(WEBアプリではありません)
これはメンテナンスを考えてそういう形をとっていますが、
この方法はdelphiにおいては妥当なのでしょうか。
現行で動いている他システム(COBOLで開発)はストレスなく動いているのですが、COBOLのdllとdelphiの実行ファイルではサイズにも差があり、やはりクライアントPCにインストールして動かすのが妥当なのかと考えております。
ちなみに私が前にいた会社ではクライアントにインストールする方法をとっており、現在の会社にきてからショートカットで動かすという方法をとるようになりました。
どなたか良い助言をお待ちしております。
以上よろしくお願いします。
動作環境がないとなんとも言えません。
通常、ネットワークにあっても、EXE全体をメモリに置いてから実行しているはず。
# リソース部分はわかりませんが、実行コード自体はメモリに展開されているはず
ご返事ありがとうございます。
動作環境はクライアントがセレロンの2.0、メモリー1G、サーバーがP4 2.6メモリー1Gを使用しております。
確かにクライアントのメモリーに展開されて実行されていると思うのですが、その展開時のネットワークの負荷によりこのような表示になっているのかと考えています。
現在テストで動かしている実行ファイルは400K未満ですが、
本番では当然2Mクラスの実行ファイルも複数できるはずですし、
データベースサーバーへのアクセスによりさらに負荷がかかることが予想されます。
ショートカットで起動する方法には無理があるのでしょうか。
そういえば、DFM(フォームのデザインなど)もリソースでしたね。
これを読み込むのに時間がかかっているのかも。
そうであれば、リソースを先読みしてやれば表示されると思います。
他の方法としては、サーバに、
・ウィンドウを表示せずにクライアントにファイルをコピーするだけのアプリ
を置いてそれを使ってクライアントにコピー、自動実行すればできそうです。
クライアントにインストールできるのであれば、その方がよいと思いますよ。
テストでクライアントPCに実行ファイルを入れて、サーバー側にショートカットを作成して実行すると(今までの逆です)、すばやく表示されました.....
実行ファイルをドメインサーバーに置いて、テストしていたのがいけなかったのでしょうか。
先ほど返信していただいた、リソースの先読みとはどのように行えばよいでしょうか。
よろしくお願いします。
さきほど、ノートンを無効にしてテストしたところ、
ストレスなく起動しました。
ウィルスソフトがチェックしていたようです...
ありがとうございました。
できましたら、リソースの先読みに関してもお教えいただけますか。
以上よろしくお願いします。
プロジェクトソースのusesに、ClassesとWindowsを加え、
var
Form1Res: TResourceStream;
begin
Application.Initialize;
Form1Res := TResourceStream.Create( HInstance, 'TFORM1', RT_RCDATA);
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.Run;
Form1Res.Free;
end.
こんな感じにして先にリソースから読み込めば、メモリに展開されたリソースを参照すると思います。
こちらの環境では、フォームの表示が遅れる現象が起こせなかったため、有効かどうかは未確認です。
いつも大変参考になります。
ありがとうございました。
ツイート | ![]() |