「ライブラリ」でもって B2MBox v1.10 を公開しました。ファイルサイズの集計を高速化しています。
カテゴリー: 開発
B2MBox v1.00 公開
「ライブラリ」でもって B2MBox v1.00 を公開しました。RimArts社のメーラー、 Becky! Internet Mail Ver.2のメールボックス一覧を表示するツールです。メールボックスごとに、フォルダ名、フォルダ数、ファイル数、ファイルサイズを表示します。該当フォルダをエクスプローラで開く機能もあり。x86用。Windows 10 Pro x64での動作を確認。製作には Embarcadero Delphi 10.3 Rio Update1 Community Edition を用いました。
DFree v3.01 公開
「ライブラリ」でもって DFree v3.01 を公開しました。アイコンの背景が白になっていたのを透過へ変更しました。それだけです。製作には Embarcadero Delphi 10.3 Rio Update1 Community Edition を用いました。
Delphi 10.3 Rio Community Edition
Delphi 10.3 Rio Update1 Community Edition 導入。
DFree v3.00 公開
「ライブラリ」でもって DFree v3.00 を公開しました。x86用アプリです。製作には Embarcadero Delphi 10.2 Tokyo Update3 Community Edition を用いました。固定ディスクの空き容量を表示し続けるツールで、ドライブ数の多い方に良ろしいかと。Windows 10 Pro x64での動作を確認しています。
Blinker v2.00 公開
「ライブラリ」でもって Blinker v2.00 を公開しました。x86用アプリです。製作には Embarcadero Delphi 10.2 Tokyo Update3 Community Edition を用いました。キーボードのLock LEDを点滅させるユーティリティで、Windows 10 Pro x64での動作を確認しています。
Delphi 10.2 Tokyo Community Edition
Professional Edition 相当のフル機能を無償で利用できるとのことで、導入してみました。さくっと Android アプリができました。ホントでした。とりあえず Community Edition があれば困らなそうです。
RAD Studio XE3
LL850/MにRAD Studio XE3 Update2 導入。
Delphi6 UP1
Borland Delphi 6にUpdate Pack 1を適用。
Memo1.Lines.Add(BcdToStr(StrToBcd('0.1')));
で’1’と表示されていたのが’0.1’と表示されるようになった。
NormalizeBcd関数の第1パラメータがconst指定で、wsprintfがstdcall指定のままだが、ま、これは簡単にどうにかできるから良いか。
BCD
Delphi 6のFMTBcdルーチン。いたるところで精度の自動調整が行なわれるのだが、その際、絶対値が1未満の数値に対する処理が×らしく、小数点が行方不明に。例えば、
Memo1.Lines.Add(BcdToStr(StrToBcd('0.1')));
で’1’と表示されるし、
BcdDivide('1','10',B); // B := 1 / 10 Memo1.Lines.Add(FormatBcd('#.#',B));
も’1’、
if BcdToDouble(DoubleToBcd(0.1)) = BcdToDouble(DoubleToBcd(1.0)) then begin Memo1.Lines.Add('一致'); end;
が’一致’してしまう。1.111を10で割ると1111となり、
B := StrToBcd('1111'); for I := 1 to 50 do begin BcdDivide(B,10,B); // B := B / 10 Memo1.Lines.Add(BcdToStr(B)); end;
という処理では1.111から1111までの間を行ったり来たり…。
まあ、整数部が常に1桁以上となるよう調整、つまりは、
CurrToBCD(0.1,B); Memo1.Lines.Add(BcdToStr(B));
や
NormalizeBcd(StrToBcd('0.1'),B,64,32); Memo1.Lines.Add(BcdToStr(B));
とでもすれば良いのだが、そうするくらいなら通常の実数型を使うほうがマシというもの。また、上記の処理を
B := StrToBcd('0.1'); NormalizeBcd(B,B,64,32); Memo1.Lines.Add(BcdToStr(B));
とすると’0’になる。これはNormalizeBcd関数の第1パラメータがconst指定であるが故。あらかじめ、
function NormalizeBcd(InBcd: TBcd; var OutBcd: TBcd; const Prec, Scale: Word): Boolean; begin Result := FMTBcd.NormalizeBcd(InBcd,OutBcd,Prec,Scale); end;
とでもしておかないと危険。
にしても、精度が命のBCDにおいて、「自動調整」ってのは…?