|
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"フォーム.dllから多次元配列の受け渡し"
はじめの2ファイルが、.DLLを構成するファイルです。
最後のファイルが、.DLLを呼び出している通常のプログラムです。
.DLLと通常のプログラムは、別々に作成します。そして、同一のフォルダーに置いて使
用します。
.DLLの画面でタイプした文字列が多次元配列に収められ、通常のプログラムのイベント
ハンドラに渡ります。
Library Fdll;
{
Entry Date : 1999.11.03.
Update : 2000.1.14.
Creator : Takehana,Tadashi
}
uses
{ ShareMem, }
SysUtils,
Classes,
Fttl in 'e:\tonifdll\Fttl.pas' {Fmttl};
Exports
Fdatttl;
begin
end.
///////////////////////////////////////
unit Fttl;
{
Entry Date : 1999.11.03.
Update : 2000.1.14.
Creator : Takehana,Tadashi
}
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, ExtCtrls;
type
TFmttl = class(TForm)
Panel1: TPanel;
SpeedButton1: TSpeedButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
procedure SpeedButton1Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Edit2KeyPress(Sender: TObject; var Key: Char);
procedure Edit3KeyPress(Sender: TObject; var Key: Char);
procedure Edit4KeyPress(Sender: TObject; var Key: Char);
procedure Edit5KeyPress(Sender: TObject; var Key: Char);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;
type
reco5 = record
ss : array[0..1,0..5,0..300] of Char;
end;
procedure Fdatttl(var ttlrec:reco5);export;
var
Fmttl: TFmttl;
implementation
var
gss : array[0..1,0..5,0..300] of Char;
gsize : array[0..1,0..5] of Integer;
{$R *.DFM}
procedure Fdatttl(var ttlrec:reco5);
begin
Fmttl := TFmttl.Create(Application);
Fmttl.ShowModal;
Fmttl.Free;
strcopy(ttlrec.ss[0][0],gss[0][0]);
strcopy(ttlrec.ss[0][1],gss[0][1]);
strcopy(ttlrec.ss[0][2],gss[0][2]);
strcopy(ttlrec.ss[0][3],gss[0][3]);
strcopy(ttlrec.ss[0][4],gss[0][4]);
strcopy(ttlrec.ss[0][5],gss[0][5]);
end;
procedure TFmttl.SpeedButton1Click(Sender: TObject);
begin
gss[0][0] := #0;
gss[0][1] := #0;
gss[0][2] := #0;
gss[0][3] := #0;
gss[0][4] := #0;
gss[0][5] := #0;
gsize[0][0] := 0;
gsize[0][1] := 0;
gsize[0][2] := 0;
gsize[0][3] := 0;
gsize[0][4] := 0;
gsize[0][5] := 0;
gsize[0][0] := length(edit1.text);
if gsize[0][0] = 0 then
begin
//data nothing !
gss[0][0] := #0;
modalresult := -1;
exit;
end;
strcopy(gss[0][0],pchar(edit1.text));
gsize[0][1] := length(edit2.text);
if gsize[0][1] = 0 then
begin
modalresult := 1;
exit;
end;
strcopy(gss[0][1],pchar(edit2.text));
gsize[0][2] := length(edit3.text);
if gsize[0][2] = 0 then
begin
modalresult := 1;
exit;
end;
strcopy(gss[0][2],pchar(edit3.text));
gsize[0][3] := length(edit4.text);
if gsize[0][3] = 0 then
begin
modalresult := 1;
exit;
end;
strcopy(gss[0][3],pchar(edit4.text));
gsize[0][4] := length(edit5.text);
if gsize[0][4] = 0 then
begin
modalresult := 1;
exit;
end;
strcopy(gss[0][4],pchar(edit5.text));
modalresult := 1;
end;
procedure TFmttl.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then Edit2.SetFocus;
end;
procedure TFmttl.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then Edit3.SetFocus;
end;
procedure TFmttl.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then Edit4.SetFocus;
end;
procedure TFmttl.Edit4KeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then Edit5.SetFocus;
end;
procedure TFmttl.Edit5KeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then Edit1.SetFocus;
end;
end.
////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
unit hivlm;
//
// Update : 2000.1.14.
// Version : 1.00.
// Creator : Takehana,Tadashi
//
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Buttons, ExtCtrls, StdCtrls, FileCtrl;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;
const
STRMAX = 300;
type
reco5 = record
ss : array[0..1,0..5,0..STRMAX] of Char;
end;
var
Form1: TForm1;
ttlrec : reco5;
implementation
{$R *.DFM}
procedure Fdatttl(var ttlrec:reco5);external'Fdll.dll';
procedure TForm1.Button1Click(Sender: TObject);
begin
Fdatttl(ttlrec);
ShowMessage('ss[0][0] = '+ttlrec.ss[0][0]+#13#10+'ss[0][1] = '+ttlrec.ss[0][
1]+#13#10+
'ss[0][2] = '+ttlrec.ss[0][2]+#13#10+'ss[0][3] = '+ttlrec.ss[0][
3]+#13#10+
'ss[0][4] = '+ttlrec.ss[0][4]);
end;
end.
Original document by 竹花 忠 氏 ID:(VZN00647)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|