フォームの表示速度について

解決


  2004-03-17 20:46:46  No: 7717

いつもお世話になっております。
実行ファイルをサーバーにおいて、ネットワーク経由で起動すると、
起動時にフォームのタイトルバーを含めた枠が表示され、ほんの少し
遅れてフォームの内部が表示されます。
このずれを直す方法はないでしょうか。
この実行ファイルはボタン1つのフォームで、サイズは400K弱で、
ネットワークは100baseです。

上記の件に関係して、システムの動作環境について少し質問ですが、
現在開発中のシステムは、クライアントサーバー型アプリケーションのクライアントプログラムをクライアントにインストールせずにサーバー側において、ショートカットで起動するという方法をとっております。(WEBアプリではありません)
これはメンテナンスを考えてそういう形をとっていますが、
この方法はdelphiにおいては妥当なのでしょうか。
現行で動いている他システム(COBOLで開発)はストレスなく動いているのですが、COBOLのdllとdelphiの実行ファイルではサイズにも差があり、やはりクライアントPCにインストールして動かすのが妥当なのかと考えております。
ちなみに私が前にいた会社ではクライアントにインストールする方法をとっており、現在の会社にきてからショートカットで動かすという方法をとるようになりました。
どなたか良い助言をお待ちしております。
以上よろしくお願いします。


にしの  2004-03-17 20:57:28  No: 7718

動作環境がないとなんとも言えません。
通常、ネットワークにあっても、EXE全体をメモリに置いてから実行しているはず。
# リソース部分はわかりませんが、実行コード自体はメモリに展開されているはず


  2004-03-17 21:18:31  No: 7719

ご返事ありがとうございます。
動作環境はクライアントがセレロンの2.0、メモリー1G、サーバーがP4 2.6メモリー1Gを使用しております。
確かにクライアントのメモリーに展開されて実行されていると思うのですが、その展開時のネットワークの負荷によりこのような表示になっているのかと考えています。
現在テストで動かしている実行ファイルは400K未満ですが、
本番では当然2Mクラスの実行ファイルも複数できるはずですし、
データベースサーバーへのアクセスによりさらに負荷がかかることが予想されます。
ショートカットで起動する方法には無理があるのでしょうか。


にしの  2004-03-17 21:44:09  No: 7720

そういえば、DFM(フォームのデザインなど)もリソースでしたね。
これを読み込むのに時間がかかっているのかも。
そうであれば、リソースを先読みしてやれば表示されると思います。

他の方法としては、サーバに、
・ウィンドウを表示せずにクライアントにファイルをコピーするだけのアプリ
を置いてそれを使ってクライアントにコピー、自動実行すればできそうです。

クライアントにインストールできるのであれば、その方がよいと思いますよ。


  2004-03-17 21:57:48  No: 7721

テストでクライアントPCに実行ファイルを入れて、サーバー側にショートカットを作成して実行すると(今までの逆です)、すばやく表示されました.....
実行ファイルをドメインサーバーに置いて、テストしていたのがいけなかったのでしょうか。

先ほど返信していただいた、リソースの先読みとはどのように行えばよいでしょうか。
よろしくお願いします。


  2004-03-17 22:15:42  No: 7722

さきほど、ノートンを無効にしてテストしたところ、
ストレスなく起動しました。
ウィルスソフトがチェックしていたようです...
ありがとうございました。
できましたら、リソースの先読みに関してもお教えいただけますか。
以上よろしくお願いします。


にしの  2004-03-17 22:51:01  No: 7723

プロジェクトソースの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.

こんな感じにして先にリソースから読み込めば、メモリに展開されたリソースを参照すると思います。
こちらの環境では、フォームの表示が遅れる現象が起こせなかったため、有効かどうかは未確認です。


  2004-03-17 22:59:33  No: 7724

いつも大変参考になります。
ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加