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

研究会

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

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

〔461〕ACFinder 060820版
 kabe WEB  (06/08/20 21:43)

引用なし
   kabeです。

060820版です。
http://acfinder.kabe.info/

データ更新専用起動オプションを付けてみました。
acfinder /u で更新のみ実行します。
完全に裏で動かす方法がわからず、フォームを最小化して実行しています。
そのため最小化したフォームがデスクトップの片隅に、アイコンがタスクバーに現れます。更新が終わると勝手に消えます。
更新専用で起動し、更新を実行した場合、データベースフォルダに update.log を作成します。

LAN内の共有フォルダからデーターベースファイルをコピーしてくる機能を付けました。
設定>基本設定>接続タブ で
「LAN内の共有フォルダからデーターベースファイルをコピーする」をチェックし、共有フォルダ名を設定しておくと、農薬検査所サイトにはアクセスせず、起動時に共有フォルダのデータベースをチェックして更新があれば自分のPCにコピーします。
この機能が有効であっても、ツールバーの「データ更新」は従来どおりです。

一応、うちの家庭内LAN環境で動作確認していますが、今回の追加機能に関しては想定どおりに動作するという自信がありません。(^^;
動作実験にご協力お願いします。

〔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.

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