C++BuilderXE3  2015.8.26       戻る

また、懲りもせず、2012.9にC++BuilderXE3を購入(DownLoad)。char*、wchar_tの問題で悪戦苦闘。 c++builder6.0→XE に変換したソ−スを XE→XE3に変換しようとした所、fman32でchar*、wchar_tのおびただしい量のエラ−が発生 し

wchar_t *w;  const char c[];  mbstowcs(wc, c, sizeof(c)); mbstowcs() を利用すれば char*、wchar_t の問題は解決しそうでしたが、余りに多すぎ、変換を諦めてしまいました。

インスト−ル後、ヘルプを表示しようとしたら、なにやら、VisualStudioに入っているプログラムがなく駄目。以前に入手していたVisual Studio2010Expressをインスト−ルした所、ヘルプが表示されるようになりました。

C++BilderXE2 から実装された FireMonkey にも挑戦してみました。
FireMonkeyを利用すると、プログラム サイズを 小さくする方法があるのかも知れませんが、私がコンパイルすると、 8Mbほどと大きくな ってしまいました。

Windows8へのインスト−ルは、DVDの install¥Setup.exe から可能でした。




Form、Panelなどの変形

自作プログラム(32ビット版の自己解凍式のファイルです)

keisoku
画像の大きさ測定
ver1.00(2015.8.26)
win10で動作確認
filemaneger
Dir,Fileの移動、削除、コピ−、Rename、バックアップ
Ver1.00(2014.12.03)
Win8,windows7で動作確認
kmlconv
KML→CSVに変換する
Ver1.01(2014.05.10)
Win8,windows7で動作確認
fdrag.exe
ファイルのDrag&Drop
ver1.00(2013.12.20)
Win8,windows7で動作確認
tate.exe
metafileを使用した熨斗などの表書き
ver1.00(2013.8.1)
Win8,windows7で動作確認
info.exe
VR_MANGR.IFOからタイトルを抜き出し、表示
ver1.00(2013.12.03)
Win8,windows7で動作確認
num.exe
StrinGridを使用したナンプレの解法
ver1.00(2013.3.10)
Win8,windows7で動作確認
codepage
UTF-8をSiftJisに変換するだけ
ver1.00(2013.1.6)
Win8,windows7で動作確認
gview2
png,gif,jpg,bmp,icoなど表示、BMP→PNGなど変換、印刷
Ver1.10(2013.10.08)
Win8,Win7で動作確認
SPHERE
球体が廻るだけのデモ
Ver1.00(2012.9.27)
Win8,Win7で動作確認
dvdout
DVDドライブの開閉をする
Ver1.00(2012.9.27)
Win8,Win7,Vistaで動作確認
rgb_conv
RGB<->10進、16進変換
Ver1.00(2012.10.14)
Win8,Win7で動作確認
calorie
カロリ−→単位、単位→グラム、グラム→単位の変換
Ver1.00(2012.10.19)
Win8,Win7で動作確認


































































filemanager ver1.00

C++BuilderXE3でコンパイルしております。
WindowsApiのSHFileOperation(&fs)を利用したFile、Directoryのコピ−、移動、名前の変更、削除、バックアップを行うプログラムです。 SHFileOperationを利用することで、特にDirに対するプログラムが簡単になりました。

現在はIFileOperation interfaceの利用が推奨されているようです。

隠しフアイルは表示出来ますが、隠しDirは表示は出来ません。DirはMultiをチェックすれば複数のDirを操作出来ます。


































































keisoku.exe ver1.00  2015.8.26
  • keisoku.zip  1.44Mb 実行フアイル
  • src.zip      12.5Kb ソ−スフアイル

左図のAは5mmの方眼紙で、これを基準として、Bの距離を測ったものです。マウスの左を押し、そのまま動かし、マウスのボタンを離せば 線が引かれ測定されます。
CLEARで基準値以外の線は消えます。

動作はWindows10で確認、現在これ以外のWindowsがなく8.1などは確認しておりません。C++Builder XE8でもコンパイルできます。


































































kmlconv.exe ver1.01  2014.5.10

山旅ロガ−で作成した xxx.kmlファイルからname、Positionを調べ、名前、緯度、経度 をcsvファイルに書き出しgoogle mapなどで利用する目的で作成したプログラムです。

山旅ロガ−はUTF8で書き出されており、LoadFromFile(FNAME,TEncoding::UTF8)としないとcsvで文字化け を起こします。
csvはlat、lon、name、snippet、descrptionの順に書き出し、google mapから利用出来ました。また libreofficeからも読めました。
Ver1.01 <LineString> タグに対応


































































fdrag   ver1.01  2013.12.20

 fdrag_exe.exe   1.52MB  実行フアイル(自己解凍)
 fdrag_src.exe   249KB  ソース フアイル(自己解凍)

FileListBoxの1ファイルのアプリケション間でのDrag&Dropを行うプログラム
ヘッダ−ファイルに下記を追加 void __fastcall DropFiles(TWMDropFiles msg); BEGIN_MESSAGE_MAP MESSAGE_HANDLER(WM_DROPFILES, TWMDropFiles, DropFiles) END_MESSAGE_MAP(TForm) CPPファイルで void __fastcall TForm1::DropFiles(TWMDropFiles msg) { int FilCount; wchar_t FileName[255]; FilCount= ::DragQueryFile((HDROP)msg.Drop,0xffffffff,NULL,255);       .       . など追加 FileListBoxのMouseMoveに DoDragDrop(dataObject, dropSource, DROPEFFECT_COPY, &dropEffect); など追加、詳細はソ−スファイルを見て下さい Ver1.10 右クリックでドラッグモ−ド Copy、Move、Link、実行など選択可能としました。


































































info.exe  ver1.00 2013.12.03

 info_exe.exe   1.35MB  実行フアイル(自己解凍)
 info_src.exe   54.9KB  ソース フアイル(自己解凍)

TV番組から録画した映画など整理してmp4に直し、HDDに保存する際、VR_MANGR.IFOからタイトルを抜き出し、フアイル名とし保存 する事を目的しております。
エクスプロ−ラよりフアイルを「Drag&Drop」で入力しております。
ヘッダ−フアイル でWindowsからのメッセージ WM_DROPFILES を DropFiles で受け取るようにする void __fastcall DropFiles(TWMDropFiles msg); BEGIN_MESSAGE_MAP MESSAGE_HANDLER(WM_DROPFILES, TWMDropFiles, DropFiles) END_MESSAGE_MAP(TForm) FormCreateで ::DragAcceptFiles(Handle ,true); DropFilesの中で ::DragQueryFile((HDROP)msg.Drop,0,FileName,255); でフアイル名を受け取り、 Label、Editコントロ−ルに表示


































































tate.exe  ver1.00 2013.8.1

 tate_exe.exe   1.48MB  実行フアイル(自己解凍)
 tate_src.exe   467KB  ソース フアイル(自己解凍)

熨斗紙などにフオントを指定、縦書き(Font→Orientation=2700 を指定しているため横書きは不可)する事を目的としたプログラムです。

MetaFileに描画し、表示、印刷は
Form1→Image1→Picture→Assign(Metafile); Printer()→Canvas→StretchDraw(rect, Metafile);で行っております。

上段、下段でフオントを別々に選択可能とし、印刷位置も調節可能としました。熨斗などは背景として画像を貼り付けました(BMP、JPG、PNG)。

下段は連名を想定し二行を印刷可能としました(下段は同じフオントを使用)
文字、フオントなど変更した際、MetaFileを全体に消し、再描画するため画面が少し乱れます。

余談ですが、最初 Form上で文字入力、編集するプログラムを組んで見たのですが、Radiobuttonなどを配置すると、Form上でKey入力 が出来なくなり、KeyPreviewをtrueにすると漢字入力が出来なくなったりとトラブリ、解決できず、断念し、このようにしました。

熨斗紙の背景画像(b、b1、b2.png)をtate−src.exeに入れて置きました。

































































num ver1.00 2013.3.10

num_exe.exe   1.42MB  実行フアイル(自己解凍)
num_src.exe   58.65KB  ソース フアイル(自己解凍)

TStringGridの使用法を調べたく、試行錯誤したプログラムで、ナンバ−プレスの問題も一応解けるようです。問題を入力しCheckボタンを繰り返しクリック すればなんとかなります。

StringGridに枠線は
StringGrid1→Canvas→Brush→Color=clBlack;
StringGrid1→Canvas→FrameRect(rect);

をOnDrawCellイベントに書き、描写しております
各セルへのフオ−カスはStringGridのRow、Colに座標をセットしております。移動は Tab、Enter、矢印キ−で可能です。

StringGridのOptionは左記のようにCheckをいれております。
枠線の描画にStringGrid1→Canvas→FrameRect(rect)を使いましたが、下記のようにStringGrid1→Canvas→Pen を使うほうが綺麗に 描けるようです Form1->StringGrid1->Canvas->Pen->Width=4; Form1->StringGrid1->Canvas->Pen->Color=clBlack; for(i=0;i<4;i++) { Form1->StringGrid1->Canvas->MoveTo(i*230,0); Form1->StringGrid1->Canvas->LineTo(i*230,230*3); Form1->StringGrid1->Canvas->MoveTo(0,i*230); Form1->StringGrid1->Canvas->LineTo(230*3,i*230);  }


































































codepage ver 1.00 2013.1.3

フオ−ムはVCL Desktop

codepage_exe.exe   1.4MB  実行フアイル
codepage_src.exe   203KB  ソース フアイル

C++Builder2009以降?UTF-8も、Memo1→Lines→LoadFromFile(FileName,TEncoding::UTF8)などTEncoding::UTF8を付ける事で読書き可能となった事を知り 試して見ました。

RichEditで試した所、一部フアイルで読み込めず、Memoでは読み込めるなど、変な動作が見られました。Memo1→Lines→SaveToFile(FileName,TEncoding::UTF8)でSave すると、BOM(Byte Order Mark)つきでSaveされ、BOMが付いていると、TEncoding::UTF8を付けなくなくとも文字ばけせず、読み込み可能でした。


































































gview2  ver1.20 2013.10.8

フオ−ムはVCL Desktop
C++Buider2009からPNG、GIF、ICON、TIFF、JPG、BMPなどの画像フオ−マットがサポ−トされるようになった事を 知り試して見ました。
#include jpeg.hpp、gifimg.hpp、pngimage.hpp、Graphics.hpp などヘッダ−フアイルを追加すれば各フオ−マット フアイルを表示してくれました。

BMP->Assign(TIF)などがエラ−で利用出来ず、TIFF、ICOは表示のみでPNG、GIF、BMP、JPGに変換してセ−ブが私には出来ませんでした。

  • gview2_exe 実行フアイル 1.63M
  • gview2_src ソース フアイル 131K

    OpenDialog を利用し、フアイル名を取得し、 gif→LoadFromFile(FileName)  bmp→Assign(gif)とし、 BMPにAssignし、表示、Saveは逆に、gif→Assign(BMP)、gif→SaveToFile(FileName)で変換しセ−ブしております。


Ver1.10 目的は「SnippingTool」などでキャプチャ−した画像を、手軽にプリントするためです。
GetDeviceCaps(dc,LOGPIXELSX)、PrintDialog、Printer()→BeginDoc()、Printer()→Canvas→StretchDraw(p_rect,bmp)、Printer()→EndDoc() など利用して印刷できるようにしました。

Ver1.20 画像によって正常にプリント出来ないBugの修正

PrinterはCanonのIP4500しか持ってなく、他のプリンタ−は試しておりません。

































































カロリ−、BMI計算  Ver1.00 2012.10.14





糖尿病の食品交換表を利用する際、食品のカロリ−表示を単位(1単位80カロリ−)に変換しなと上手く計算出来ないので、その一助 になればと思い、また肥満度の目安となるBMIも計算出来ればと重い作成しました。

Formは「HD FireMonkey アプリ」を選択、Formはカロリ−用と、BMI用の2つを作り、Label と Editをペタ・y・E^貼りつけ ました。

カロリ・|を単位に変換する・スめに、食品のグラムとそのカロリ−入力し確定ボタンを押し、その後、単位→グラム、グラム→単位を計算

BMI=体重(kg)/身長(m)の二乗で計算しております

( 肥満度は肥満学会の2000年度改定によります )

 
































































SPHERE   Ver1.00   2012.9.27





Formは「HD FireMonkey アプリ」を選択し、左図の構造に示すコントロ−ルを貼り付けました
回転はボタンのクリックでY軸の(Sphere1→RotationAngle→Y=Sphere1→RotationAngle→Y+I)数値を増減する事で行っております


プロパティ-の項目などはXE2とは多少違うようです(XE2を持っていな・「ないので詳細は不明)


































































rgb_conv ver1.00 2012.10.14



RGB <-> 10進、16進値に変換するプログラムです。
16進入力は 0xffffff00 のように頭に 0xff を付けないとなりません。C++BuiderXE3でのカラ−は8桁で先頭にFFが つきます。

また、文字列を10進に変換する際、10桁は (unsigned)StrToInt(Edit4→Text) でエラ−となり、(unsigned)Edit4→Text.ToDouble() で int に変換しました。

終了すためのButtonに、悪戯してCornerButtonにFloatAnimationを付け、Opacityでアニメ−トさせて見ました。 意味もないのですがButtonの角度も斜めにしました。

































































dvdout  ver1.00   2012.9.27




DVDのトレイの開閉を行うだけです。
Formは「HD FireMonkey アプリ」を選択し、左図の構造に示すコントロ−ルを貼り付けました
#include <mmsystem.h> int RET=::mciSendString( L"Set CDaudio Door Open", NULL, 0, NULL ); などのコマンドを利用しDVDのトレイの開閉を行っております。