Laboratory of Mobile Agricultural Chemicals Searcher
携帯農薬検索実験室

研究会

  ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索  
602 / 1063 <前へ | 次へ>

〔462〕Re:ACFinder 060820版
 Hidemi Oya WEB  (06/08/20 22:27)

引用なし
   kabe さん、こん**は。Hidemi Oya です。

 060820 版は未使用ですが、[#448]
>メインフォームの Createイベントの最後で、データ更新機能を動かすようにしており、データ更新はしているのですが、メモリリークが出たりでまだ実用になりそうもありません。
に関して…。Sample1 のように、メインフォーム OnCreate イベントの最初で Application.Terminate を実行してもメモリリークが発生しますか?
 もし発生するなら、Sample2 はどうでしょう?

----- Sample1 -----
-- sample1.dpr --
program sample1;

uses
 Forms,
 Main in 'Main.pas' {frmMain};

{$R *.res}

begin
 Application.Initialize;
 Application.CreateForm(TfrmMain, frmMain);
 Application.Run;
end.

-- Main.pas --
unit Main;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs;

type
 TfrmMain = class(TForm)
  procedure FormCreate(Sender: TObject);
 private { Private 宣言 }
 public { Public 宣言 }
 end;

function UpdateOnly: boolean;

var
 frmMain: TfrmMain;

implementation

{$R *.dfm}

uses
 Sub;

function UpdateOnly: boolean;
var
 i: integer;
begin
 Result := false;
 for i := 1 To ParamCount do begin
  Result := AnsiSameText(ParamStr(i), '/U');
  if Result then break;
 end;
end;

procedure TfrmMain.FormCreate(Sender: TObject);
begin
 if IsUpdated then
  with TfrmSub.Create(Self) do begin
   ShowModal;
   Release;
  end;
 if UpdateOnly then begin
  Application.Terminate;
  Exit;
 end;
 // 本来のメインフォーム OnCreate イベントハンドラ
end;

end.

-- Sub.pas --
unit Sub;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TfrmSub = class(TForm)
 private { Private 宣言 }
 public { Public 宣言 }
 end;

function IsUpdated: boolean;

var
 frmSub: TfrmSub;

implementation

{$R *.dfm}

function IsUpdated: boolean;
begin
 Result := true; // 本来はアップデートされているかどうかを返す
end;

end.

----- Sample2 -----
-- sample2.dpr --
program sample2;

uses
 Forms,
 Main in 'Main.pas' {frmMain},
 Sub in 'Sub.pas' {frmSub};

{$R *.res}

begin
 Application.Initialize;
 if IsUpdated then
  with TfrmSub.Create(nil) do begin
   ShowModal;
   Release;
  end;
 if UpdateOnly then
  Application.Terminate // これは不要かも
 else begin
  Application.CreateForm(TfrmMain, frmMain);
  Application.Run;
 end;
end.

-- Main.pas --
unit Main;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs;

type
 TfrmMain = class(TForm)
  procedure FormCreate(Sender: TObject);
 private { Private 宣言 }
 public { Public 宣言 }
 end;

function UpdateOnly: boolean;

var
 frmMain: TfrmMain;

implementation

{$R *.dfm}

uses
 Sub;

function UpdateOnly: boolean;
var
 i: integer;
begin
 Result := false;
 for i := 1 To ParamCount do begin
  Result := AnsiSameText(ParamStr(i), '/U');
  if Result then break;
 end;
end;

procedure TfrmMain.FormCreate(Sender: TObject);
begin
 // メインフォーム OnCreate イベントハンドラ
end;

end.

-- Sub.pas --
unit Sub;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TfrmSub = class(TForm)
 private { Private 宣言 }
 public { Public 宣言 }
 end;

function IsUpdated: boolean;

var
 frmSub: TfrmSub;

implementation

{$R *.dfm}

function IsUpdated: boolean;
begin
 Result := true; // 本来はアップデートされているかどうかを返す
end;

end.

〔461〕ACFinder 060820版 kabe (06/08/20 21:43)
〔462〕Re:ACFinder 060820版 Hidemi Oya (06/08/20 22:27) <<<

  ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索  
602 / 1063 <前へ | 次へ>
ページ:  ┃  記事番号:   
(SS)C-BOARD vv3.8 is Free.