2020.12.17

MiBarcode ver8.10正式版がVectorでも公開されました

Vectorの公開ページです。

https://www.vector.co.jp/soft/winnt/writing/se135506.html
 
 

| | コメント (6)

2020.12.10

MiBarcode ver8.10正式版を公開しました

私のホームページで公開しましたのでお知らせします。

尚、Vectorの方にもアップしましたので近日中に公開されるかと思います。

#Vectorには久しぶりにアップしたため、正しくアップされているかちょっと心もとないのですが・・・

 

 

 

| | コメント (0)

2020.11.25

DelphiのDLLからクラスのインスタンスを返す

MiBarcodeのVer8.0ではZint Barcode Library for Delphiを用いてのGS1データバー等の作成が出来るようにしたのですが、このZintライブラリがAppach2.0ライセンスとなっていることから、中には使用を溜めらる方もいるのではないかと思い、何とかZintライブラリをMiBarcodeと切り離して使用したい方だけが使用できるようにならないかと考えていました。
そこで、ZintライブラリをDLL化することで、MiBarcodeをインストールする際に必要な方だけがこのDLLのインストールを選択出来るように出来ないかと思ったわけです。
で、DLL側からDLLのコール元であるMiBarcode側に作成されたバーコードをどうやって渡すのかという問題に直面しました。一番簡単なのはDLL側のバーコード作成関数が作成されたMetafileを直接返すことなのですが、これが普通にやろうとするとDLL側で生成したTMetafileのインスタンスがMiBarcode側に返された時点で破棄されてしまうようで中々うまく行かず悩みに悩んだのですが、DLL側でTMetafileのインスタンスをDLLが破棄されるまで保持し続ければ良いことがわかりました。
その方法は、DLL側でTMetafileクラスのインスタンスを宣言するためのユニットを追加して、そのユニットのinitializationでクラスを生成しfinalizationで破棄するというものです。この方法であれば、TMemoryStream等の他のクラスやヒープメモリ等もDLLが読み込まれてから破棄されるまでの間、ずっとそれらを保持し続けるため、DLL側から呼び出し側に問題なくクラス等の戻り値を返すことが出来ます。

MfBuff.pas : DLLで使用するTMetafileクラスの宣言と生成・破棄を行う例

unit MfBuff;

{

DLL側からコール先に対して安全にMetafileの実体を返すために、DLLが起動した際にMetafileの

インスタンスを作成・保持し、DLLが破棄されるタイミングでMetafileのインスタンスを破棄する

ために、そのためだけのユニットを準備してそのinitializationとfinalizationでインスタンス

生成と破棄を行わせる

}



unit MfBuff;



interface



uses

Vcl.Graphics;



var

Mf: TMetafile;



implementation



initialization

// Metafileを準備する

Mf := TMetafile.Create;



finalization

// Metafileを開放する

Mf.Free;



end.


MfDLL.dpr : DLLの関数からTMetafileのインスタンスを返す例


library MfDLL;



uses

Windows,

System.SysUtils,

System.Classes,

Vcl.Graphics,

MfBuff in 'MfBuff.pas';



{$R *.res}



function GetMetafile: TMetafile; stdcall;

var

mc: TMetafileCanvas;

begin

// Metafileのインスタンスを返す一例としてキャンバスに四角を描画してみる

Mf.SetSize(100, 100);

mc := TMetafileCanvas.Create(Mf, GetDC(0)); // 描画キャンバスを準備

try

mc.Brush.Color := clWhite;

mc.Pen.Color := clBlack;

mc.FillRect(Rect(0, 0, 99, 99));

mc.Draw(0, 0, mf); // 描画されたバーコードをコピー

mc.Pen.Width := 2;

mc.MoveTo(1, 1); // 外枠を描画

mc.LineTo(98, 1);

mc.LineTo(98, 98);

mc.LineTo(1, 98);

mc.LineTo(1, 1);

finally

mc.Free;

end;

Result := Mf; // MfBuffユニットで生成したMetafileのインスタンスを返す

end;



exports

GetMetafile;



begin

end.


DLLと呼び出しのサンプルプロジェクト
ダウンロード - mfdllcall.zip

現在、この方法を用いてMiBarcode本体からZint Barcode Libraryを切り離してDLL化して、Zintライブラリを使用したくない場合はインストール時に選択出来るようにすべく作業中です。この作業が終わった段階で正式アップデート版としてリリースします。

#ココログの編集を「通常エディタ≒テキストモード」で行っても、保存する段階で変な整形が入って中々思った通りの結果にならずイラッとします。
#やっぱり引っ越しを考えたほうがいいのかも・・・

| | コメント (0)

2020.11.18

MiBarcode ver8.0.3フルパッケージ版の公開

昨日正式公開版がインストールできなとのコメントを頂いたため(本日、無事インストールできたとのコメントが有りましたので安心しました)、本体だけの公開となっていたVer8.0.3をインストーラー形式のフルパッケージ版として先行リリースします。

 

尚、バージョンは8.0.3のままですが、前回修正したクリップボード周りのエラー対策を更に強化しています。また、ヘルプファイルとサンプルファイルAuto_smp.xlsxを更新しています。

 

ダウンロード - mib803setup.zip

 

| | コメント (0)

2020.10.12

MiBarcodeインストーラーの不具合について

先日ある方から報告を頂いて確認した所、MiBarcodeのインストーラーに不具合があることがわかりました。

 

不具合内容:

インストール先にデフォルトフォルダ以外を指定するとインストール後のオートメーションサーバ機能の登録(「オートメーションサーバ機能を登録する」を指定していれば)と、初めに.txtの表示に失敗するというものです。

尚、この状態でも、MiBarcodeのオートメーションサーバ機能を使用しないのであればMiBarcodeを使用する上での問題はありません。

Err1_20201012110201Err2
 

MiBarcodeのインストール先をデフォルトフォルダ以外にした場合で、オートメーションサーバ機能を使用するための方法:

ファイルエクスプローラでMiBarcodeをインストールしたフォルダ内にあるAutoInst.batを選択して右クリックし、管理者として実行を選択して実行してください。

 

尚、このインストーラーの不具合は手許では修正済みですので、次の正式版公開時にはこの問題が解消される予定です。

 

| | コメント (3)

2020.04.30

MiBarcode Ver.8.0.3

GS1データバー等のZint-Barcode-Generator-for-Delphiを使用した場合にバーコードの表示サイズがおかしくなっていたため修正しました。
また合わせて、クリップボード初期化時に「クリップボードを開けません」が発生しづらくなるようにエラートラップを強化してみました。
 
Mibar803
 
 

MiBarcode8.0.3のダウンロード - mibar803.zip

 
 
 

 

| | コメント (6)

2020.04.23

MiBarcode Ver.8.0.2

コメントに書き込みがあったk.kさんの要望を別ウィンドウにバーコード全体を表示させることで実現してみました。

表示メニューの「バーコードウィンドウ」または右上のボタン「プ」でバーコードのプレビューウィンドウ表示をON/OFF出来ます。
 
Mibar802

ざっとした動作確認をしていませんので、何か不具合があるかもしれません。
もし不具合を見つけた方はコメント欄に書き込みをお願いします。
 
 

Mibar802.zipのダウンロード - mibar802.zip

 
 
なお、配布ファイルはMiBarcd.exe本体のみです。
既にインストール済みのMibarcd.exeに上書きするか、任意の一時的なフォルダにコピーするなどしてお試し下さい。


#ちなみにMiBarcodeは初公開から20周年となりました。
Mibar20th
 
 

 

| | コメント (6)

2019.09.04

MiBarcode Ver8.01の公開

新たに追加したGS1データバーがファイルに保存出来ない不具合を修正しました。

 

ダウンロード - mibar801.zip

 

Mibarcd.exe本体のみです。解答したファイルを直接MiBarcodeのインストールフォルダ(通常はC:\Program Files (x86)\MiBarcode

)にコピーして下さい。

 

 

| | コメント (0)

2019.08.30

MiBarcode Ver8.00β版の公開

久しぶりですが、MiBarcodeのバージョンアップ版をとりあえずβ版として公開します。

変更点は、

・GS1データバー四種類(限定型、二層型、標準型、標準二層型)をサポート。

・ライセンス上の懸念から開発環境をDelphi 10.2 Community EditionからXE2 Professional版に戻した。

上記の2点です。また、一部のサンプルファイルも修正してきます。

尚、GS1データバーの作成にApach2.0ライセンスの製作物であるZint-Barcode-Generator-for-Delphiライブラリを使用していますが、MiBarcode自体の使用条件は従来通りです。詳しくは同梱のヘルプファイルを参照してください。

GS1データバー四種類の読み取り確認はスマホのバーコード読み取りアプリで行いましたが、読み取り出来ない不具合やその他の不具合があればレポートをお願いします。

※一応手元での確認結果では、1倍では読み取り出来ず2倍、3倍での読み取りは問題なしでしたので、もし「1倍で読み取れた」という方がいらっしゃいましたら、読み取り機器の種類と合わせてレポートしていただけると助かります。

 

まだβ版ですが、フルセットのセットアップファイル形式で公開します。

ダウンロード - mib800setup.zip

ダウンロードしたファイルを解答して得られたmib800setup.exeを実行して下さい。

 

 

| | コメント (7)

2018.01.06

MiBarcode ver7.31正式版リリース

MiBarcode ver7.31正式版をホームページで公開しました。

 

Vectorさんでも近日中に最新版に更新されると思います。

 

| | コメント (0) | トラックバック (0)