<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>C++Builder | じじぃの引出し</title>
	<atom:link href="https://www.kazuban.com/blog/category/c-builder/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.kazuban.com/blog</link>
	<description>なにかしら、皆さんの参考になれば幸いです！</description>
	<lastBuildDate>Mon, 22 Dec 2025 23:11:24 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://www.kazuban.com/blog/wp-content/uploads/2020/05/cropped-ICON-1-32x32.png</url>
	<title>C++Builder | じじぃの引出し</title>
	<link>https://www.kazuban.com/blog</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>FFmpeg を利用し、「AVI」を連結し「MP4」に変換する支援ソフト作ってみた。</title>
		<link>https://www.kazuban.com/blog/ffmpeg-video-maerger/</link>
		
		<dc:creator><![CDATA[kazuban]]></dc:creator>
		<pubDate>Fri, 21 Feb 2025 00:22:41 +0000</pubDate>
				<category><![CDATA[C++Builder]]></category>
		<category><![CDATA[フリーソフト]]></category>
		<category><![CDATA[FFmpeg]]></category>
		<category><![CDATA[動画編集]]></category>
		<guid isPermaLink="false">https://www.kazuban.com/blog/?p=10339</guid>

					<description><![CDATA[ばあちゃん宅の庭に何か来てそう・・・だと言うことで、電池式でmicroSDに録画するカメラと猫餌を仕掛けてみました。動体検知なので、映像に動きがあった時だけ録画します。AVI形式なのと、かなり、無駄なファイルも多いので、 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">ばあちゃん宅の庭に何か来てそう・・・だと言うことで、電池式でmicroSDに録画するカメラと猫餌を仕掛けてみました。<br>動体検知なので、映像に動きがあった時だけ録画します。<br>AVI形式なのと、かなり、無駄なファイルも多いので、写っている動画だけ残したいのですが、その動画ファイル「AVI」を「MP4」に変更し一つに結合するのにどうしようか？<br>最初は、Windows11標準の「Micosoft Clipchamp」でやってみました。<br>ところが、短い映像ファイルが、多数がある上に、一旦クラウドにアップして処理するようでかなり時間がかかります。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">FFmpegの利用</a></li><li><a href="#toc2" tabindex="0">FFmpeg、ダウンロード</a></li><li><a href="#toc3" tabindex="0">連結支援アプリ、FFmpegVideoMerger.exe　開発</a></li><li><a href="#toc4" tabindex="0">FFmpegVideoMerger.exe　使い方</a><ol><li><a href="#toc5" tabindex="0">ダウンロード、インストール</a></li><li><a href="#toc6" tabindex="0">使用方法</a></li></ol></li><li><a href="#toc7" tabindex="0">あとがき</a></li><li><a href="#toc8" tabindex="0">ダウンロード</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">FFmpegの利用</span></h2>



<p class="wp-block-paragraph">何か、いい方法ないか・・・、そうだ！<br>以前Linuxにインストールした、「FFmpeg」を思い出しました。</p>



<figure class="wp-block-embed is-type-wp-embed"><div class="wp-block-embed__wrapper">

<a href="https://www.kazuban.com/blog/mp4_dvd/" title="３０年前の８ｍｍビデオを無料でＤＶＤディスクへ変換。" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" width="160" height="90" src="https://www.kazuban.com/blog/wp-content/uploads/2023/08/FFmpeg-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://www.kazuban.com/blog/wp-content/uploads/2023/08/FFmpeg-160x90.png 160w, https://www.kazuban.com/blog/wp-content/uploads/2023/08/FFmpeg-120x68.png 120w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">３０年前の８ｍｍビデオを無料でＤＶＤディスクへ変換。</div><div class="blogcard-snippet internal-blogcard-snippet">Windowsやスマホでも、標準でMP4ファイルが再生できるので、DVD-Videoの必要は少なってきています。ただ、古いDVDデッキで再生しようと思うと、やはりDVD-Videoメディアが必要です。Windowsソフトでも、フリーや体験版のソフトは沢山ありますが、せっかく、linux環境があるので、フリーライセンスで作成してみました。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.kazuban.com/blog" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">www.kazuban.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2023.08.28</div></div></div></div></a>
</div></figure>



<p class="wp-block-paragraph">この記事で紹介している、<a href="https://www.kazuban.com/blog/mp4_dvd/#toc8">「動画リストファイル」を作成</a>すると、連結してくれます。<br>ところが、今回は動画ファイルが多いので、リストファイルを手作業で作るのは面倒です。<br>シェルでどうにかする方法も可能ですが、Linuxマシンへの転送も面倒なので、今回は、Windows環境で作業しようと思います。</p>



<p class="wp-block-paragraph">FFmpegのWindowsへのインストール方法は、ネット上にたくさん公開されていますが、基本的には実行ファイルをダウンロード・展開して利用する方法です。<br>標準では一般的なインストーラではないので任意のフォルダへ保存するだけで動きますが、プログラムへのパスも通っていません。<br>実行にはフルパスで指示するか、環境変数でパスを通す必要があります。<br>操作は基本的に、CUIでの作業になります。<br>今回のやりたい作業は撮れてた動画はTVで見たいので、「AVI」を「MP4」に連結したいです。<br>動画連結は、頻繁にやると思うので、連結するファイルリストとFFmpeg用のコマンドを生成するだけの仕様ですが、ソフト作りました。</p>



<h2 class="wp-block-heading"><span id="toc2">FFmpeg、ダウンロード</span></h2>



<p class="wp-block-paragraph"><a href="https://ffmpeg.org/download.html#build-windows">ダウンロードはこちらからできます</a>が、下記２つの選択があります。<br>・Windows builds from gyan.dev<br>・Windows builds by BtbN<br>どっちが、いいんだろう？<br><a href="https://moischan.blog.fc2.com/blog-entry-35.html">こちらに説明がありました</a>ので、参考にさせていただきましたが、<br>私は、「Windows builds from gyan.dev」の「release builds」<a href="https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-full.7z">「ffmpeg-release-full.7z」</a>をダウンロードしました。<br>「.7z」で圧縮されていますが、筆者のWindows11の環境では、エクスプローラ上でクリックすると、圧縮されているフォルダが表示されるので、適当なフォルダへドラッグ＆ドロップでコピーしました。</p>



<h2 class="wp-block-heading"><span id="toc3">連結支援アプリ、FFmpegVideoMerger.exe　開発</span></h2>



<p class="wp-block-paragraph">FFmpegを利用して動画の連結させるだけのWindowsアプリです。<br>もちろん、FFmpeg だけでもコマンドをたたけば、連結は可能ですが、環境整えたり、ファイルリストを作成するのも面倒だったので、ソフト化しました。<br>通常は、下記の操作が必要です。</p>



<ul class="wp-block-list">
<li>環境変数を編集し、パスを通す</li>



<li>連結する、ファイルリストをテキストファイルで作成する</li>



<li>FFmpeg のコマンドで、連結を実行する</li>
</ul>



<p class="wp-block-paragraph">書き出してみれば、大した作業ではないですが、ファイルリストを作るのも、結構面倒です<br>アプリの仕様としては、<span class="marker-under-red"><span class="marker-under">連結したい動画ファイルを任意ファルダへコピー</span></span>しておいて、<span class="marker-under-red">そのフォルダをアプリ上へドロップ</span>する事で、ファイルリストを作成します。<br>ファイルリストの順序も変更可能にしました。<br>FFmpeg のパスも、コピーした実行ファイル「FFmpeg.exe」が保存されているフォルダをドロップする事で、環境変数の設定なしでも、動作できるようにしました。</p>



<h2 class="wp-block-heading"><span id="toc4">FFmpegVideoMerger.exe　使い方</span></h2>



<h3 class="wp-block-heading"><span id="toc5">ダウンロード、インストール</span></h3>



<ul class="wp-block-list">
<li><a href="https://www.kazuban.com/blog/free_soft/#Soft20">こちらから、ダウンロード</a></li>



<li>ダウンロードした圧縮ファイルを、適当なフォルダへ解凍</li>



<li>解凍されたフォルダ内の、「Readme.txt」を読んでいただけると幸いです。</li>



<li>連結したい動画類をコピーした、フォルダを準備します。</li>



<li>対応拡張子<br>FFmpeg はかなりのファイル形式に対応しているみたいですが、このアプリでは下記の拡張子を動画ファイルと判断し、リストを作成します。<br><span class="marker-blue">&#8221; TS, MP4, MOV, MKV, AVI, FLV &#8220;</span><br>ただし、筆者の環境では、<span class="marker-under">「AVI、MP4」の結合しか確認していません</span>ので、ご了承ください。</li>



<li>フォルダ内の、「FFmpegVideoMerger.exe」で起動できます。</li>
</ul>



<h3 class="wp-block-heading"><span id="toc6">使用方法</span></h3>



<p class="wp-block-paragraph">簡単に説明すると、</p>



<ul class="wp-block-list">
<li>「動画フォルダをドロップ」</li>



<li>「FFmpegフォルダをドロップ」</li>



<li>「ビデオファイルボタンクリック」</li>



<li>「FFmpeg実行ボタンクリック」</li>
</ul>



<p class="wp-block-paragraph">の手順です。<br>下記で、もう少し詳しく説明します。</p>



<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="771" height="781" src="https://www.kazuban.com/blog/wp-content/uploads/2025/02/FFmpegVideoMerger_Help.png" alt="" class="wp-image-10370" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/02/FFmpegVideoMerger_Help.png 771w, https://www.kazuban.com/blog/wp-content/uploads/2025/02/FFmpegVideoMerger_Help-500x506.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2025/02/FFmpegVideoMerger_Help-300x304.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2025/02/FFmpegVideoMerger_Help-768x778.png 768w" sizes="(max-width: 771px) 100vw, 771px" /></figure>



<ul class="wp-block-list">
<li>動画が登録された、フォルダを<span style="background-color:red"><font color="white"><strong>①</strong>のパネルへドロップ</font></span>します</li>



<li>登録されている動画ファイルの一覧が、<span style="background-color:cyan"><font color="black"><strong>②</strong>のエディタ領域へリスト化されます</font></span></li>



<li>一般的な、エディタ的な操作になります。<br>追加、削除、順序変更などが可能です。</li>



<li><span style="background-color:lime"><font color="black"><strong>③</strong>は、結合された、ファイル名です。</font></span><br>ファイル名は変更可能ですが、現バージョンでは、「MP4」を想定しています。</li>



<li><span style="background-color:purple"><font color="white"><strong>④</strong>に、「ffmpeg.exe」のファイルか、登録されている親フォルダ「bin」をドロップ</font></span></li>



<li><span style="background-color:maroon"><font color="white">⑤</font></span>私の環境では、無変換で、結合させた動画が、「メディアプレーヤー」でうまく動作しなかったので、「H.264」でエンコードするオプションを追加しました。<br><span style="background-color:maroon"><font color="white">デフォルトでは、チェック状態になっていますが、エンコードは少し時間がかかるので、不要な場合には、チェックを外してください。</font></span></li>



<li>設定が正常であれば、<span class="inline-button-white-black">「Create a video list file.」</span>のボタンが表示されます。<br>クリックすると、動画ファイルフォルダに、ファイルリスト「list.txt」と、実行コマンドファイル「cmd.txt」が作成されます。</li>



<li>FFmpeg は、最適化や品質など、多くのパラメータがあるので、「cmd.txt」を手動編集することも可能です。</li>



<li>この「cmd.txt」を、手動で一行づつ確認しながら、コマンドプロンプトで実行する事も可能ですが、表示された<span class="inline-button-white-black">「Run FFmpeg」</span>をクリックすると、実行用バッチファイルを作成し、自動実行します。</li>



<li>多少の動画ファイルの削除、追加の場合、動画フォルダに追加・削除して、エディタ等で「list.txt」を編集し、「cmd.bat」に名前変更して実行すれば、再結合する事も可能です。</li>
</ul>



<h2 class="wp-block-heading"><span id="toc7">あとがき</span></h2>



<p class="wp-block-paragraph">ばあちゃん宅に来てたのは、タヌキでしたぁ～<br>他にも、猫やカラス、イタチみたいの・・・近所に墓地公園があるので、動物には暮らしやすいと思います。</p>



<figure class="wp-block-video"><video height="1080" style="aspect-ratio: 1920 / 1080;" width="1920" controls src="https://www.kazuban.com/blog/wp-content/uploads/2025/02/tanuki.mp4"></video></figure>



<p class="wp-block-paragraph">FFmpegは、CUIが基本ですが、かなり多くの機能があります。<br>今回公開のアプリは、GUI操作でFFmpegの結合オプションをFFmpegに渡すだけの機能ですが、FFmpegのコマンド操作を少しづつ、GUI化で支援機能を追加していけば、簡易的な動画編集アプリに進化していく可能性はありますね。<br>動画編集は、あまりやらないので、まったく素人ですが、またなにか必要な操作がでてきたら、ソフト化してみたいと思います。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc8">ダウンロード</span></h2>



<p class="wp-block-paragraph">下記、「自作ソフト」ページから、ダウンロードできます。</p>



<figure class="wp-block-embed is-type-wp-embed"><div class="wp-block-embed__wrapper">

<a href="https://www.kazuban.com/blog/free_soft/#Soft20" title="自作ソフト" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://www.kazuban.com/blog/wp-content/uploads/2025/02/freesoft-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://www.kazuban.com/blog/wp-content/uploads/2025/02/freesoft-160x90.png 160w, https://www.kazuban.com/blog/wp-content/uploads/2025/02/freesoft-120x68.png 120w, https://www.kazuban.com/blog/wp-content/uploads/2025/02/freesoft-320x180.png 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">自作ソフト</div><div class="blogcard-snippet internal-blogcard-snippet">サイト内記事で紹介した、自作ソフトやデータをダウンロードできます。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.kazuban.com/blog" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">www.kazuban.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2021.07.11</div></div></div></div></a>
</div></figure>
]]></content:encoded>
					
		
		<enclosure url="https://www.kazuban.com/blog/wp-content/uploads/2025/02/tanuki.mp4" length="114951278" type="video/mp4" />

			</item>
		<item>
		<title>C++Builder 10.4 Community Edition　のライセンス更新 2023</title>
		<link>https://www.kazuban.com/blog/cbuilder-10-4-update/</link>
		
		<dc:creator><![CDATA[kazuban]]></dc:creator>
		<pubDate>Fri, 31 Mar 2023 01:12:53 +0000</pubDate>
				<category><![CDATA[C++Builder]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[C++Builder更新]]></category>
		<category><![CDATA[Community Edition]]></category>
		<category><![CDATA[覚書]]></category>
		<guid isPermaLink="false">https://www.kazuban.com/blog/?p=7703</guid>

					<description><![CDATA[昨年は、再度新しいバージョンをダウンロードし、再インストールする事で、再度１年間使用できました。 今年は、延長の方法が変わっているようです。検索してみると、今までは新しいバージョンをインストールする事で、再度一年間使用で [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">昨年は、再度新しいバージョンをダウンロードし、再インストールする事で、再度１年間使用できました。</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-じじぃの引出し wp-block-embed-じじぃの引出し"><div class="wp-block-embed__wrapper">

<a href="https://www.kazuban.com/blog/cbuilder-license-update/" title="C++Builder Community Edition　のライセンス更新" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="320" height="70" src="https://www.kazuban.com/blog/wp-content/uploads/2019/07/10_3_1.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://www.kazuban.com/blog/wp-content/uploads/2019/07/10_3_1.png 630w, https://www.kazuban.com/blog/wp-content/uploads/2019/07/10_3_1-300x65.png 300w" sizes="(max-width: 320px) 100vw, 320px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">C++Builder Community Edition　のライセンス更新</div><div class="blogcard-snippet internal-blogcard-snippet">会社では開発環境として、「C++Builder EX6」を使用しています私はソフトウェア開発が商売ではなく、加工が楽になるような、NCデータやNC機械や測定器などのユーティリティソフトを作成していますC++の統合開発環境としては、やはりMSのVisual C++ がメジャーだと思いますが私は、二昔以...</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.kazuban.com/blog" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">www.kazuban.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2019.07.29</div></div></div></div></a>
</div></figure>



<p class="wp-block-paragraph">今年は、延長の方法が変わっているようです。<br>検索してみると、今までは新しいバージョンをインストールする事で、<br>再度一年間使用できたようですが、「10.4」より新しいバージョンが公開されていない現在<br>ダウンロード・インストールの方法では、延長できないみたいです。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-4" checked><label class="toc-title" for="toc-checkbox-4">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">サポートページ</a></li><li><a href="#toc2" tabindex="0">更新</a></li><li><a href="#toc3" tabindex="0">登録完了</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">サポートページ</span></h2>



<p class="wp-block-paragraph"><a href="https://blogs.embarcadero.com/ja/delphi-cbuilder-community-editions-10-4-2-license-extension-ja/">「embarcadero」のサポートページに情報がありました。</a><br>このページをみると</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">使用されているCommunity Editionの<strong>ライセンスの期限が切れた後に</strong>、新しいCommunity Editionのライセンスを取得していただくことで、継続してお使いいただくことができます。 </p>
</blockquote>



<p class="wp-block-paragraph">とありますから、今までは１か月程度早い時期から更新していましたが、期限がきれるまで待つことにしました。</p>



<h2 class="wp-block-heading"><span id="toc2">更新</span></h2>



<p class="wp-block-paragraph">ライセンス期限が切れた後に、C++Builderを起動すると、いきなりライセンス登録画面になりました</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="538" height="395" src="https://www.kazuban.com/blog/wp-content/uploads/2023/03/License.png" alt="" class="wp-image-7715" srcset="https://www.kazuban.com/blog/wp-content/uploads/2023/03/License.png 538w, https://www.kazuban.com/blog/wp-content/uploads/2023/03/License-300x220.png 300w" sizes="(max-width: 538px) 100vw, 538px" /></figure>



<p class="wp-block-paragraph">Enbarcadero Developer Network のアカウントは作っていないので、どうしたものか？と思いながら<br>「詳細」をクリックすると、やはりライセンスは期限切れ状態です。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="785" src="https://www.kazuban.com/blog/wp-content/uploads/2023/03/License3-1024x785.png" alt="" class="wp-image-7717" srcset="https://www.kazuban.com/blog/wp-content/uploads/2023/03/License3-1024x785.png 1024w, https://www.kazuban.com/blog/wp-content/uploads/2023/03/License3-300x230.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2023/03/License3-768x589.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2023/03/License3.png 1047w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph"><br>とりあえず、キャンセルして<a href="https://www.embarcadero.com/jp/products/cbuilder/starter/free-download">C++Builder Community Edition 無料ダウンロードのページへ</a><br>ここで、「トライアル版」と「Community Edition」は別物なので注意してください。<br>「トライアル版」は、あくまで「有料製品版」の試用です。<br>「Community Edition」は「無料」ですが、<a href="https://www.embarcadero.com/jp/products/cbuilder/starter">利用資格</a>がありますので注意してください。</p>



<p class="wp-block-paragraph">ダウンロードページでは必要事項を入力し「ダウンロード」すると、ほどなくＥメールが届きます。<br>Ｅメールには、Serial Number　が書かれているので、再度上記の製品登録画面の「Serial Number」に<br>入力します。<br>すると、気になっていた「Enbarcadero Developer Network」の入力項目は無効になり<br>「登録」ボタンが有効になりました。</p>



<h2 class="wp-block-heading"><span id="toc3">登録完了</span></h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="788" src="https://www.kazuban.com/blog/wp-content/uploads/2023/03/License4-1024x788.png" alt="" class="wp-image-7719" srcset="https://www.kazuban.com/blog/wp-content/uploads/2023/03/License4-1024x788.png 1024w, https://www.kazuban.com/blog/wp-content/uploads/2023/03/License4-300x231.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2023/03/License4-768x591.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2023/03/License4.png 1040w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">これで、後１年遊べます。<br>「C++Builder Community Edition」は、無料ながら、ランタイムを必要としないWindowsネイティブな「exe」実行ファイル作成できます。<br>場面まわりもの簡単にレイアウトできますし、C++言語でプログラムできます。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>ソフトの終了状態を記録。C++BuilderでINIファイルを利用する。</title>
		<link>https://www.kazuban.com/blog/init-file/</link>
					<comments>https://www.kazuban.com/blog/init-file/#comments</comments>
		
		<dc:creator><![CDATA[kazuban]]></dc:creator>
		<pubDate>Wed, 18 Nov 2020 09:04:50 +0000</pubDate>
				<category><![CDATA[C++Builder]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[INIファイル]]></category>
		<category><![CDATA[フォント変更]]></category>
		<guid isPermaLink="false">https://www.kazuban.com/blog/?p=3758</guid>

					<description><![CDATA[前回公開した、ＮＣデータ確認ソフトはエディタ部分のフォントを変更できる仕様としました。でも、再起動時には初期状態へ戻ってしまうため、フォントの設定状態を、次回起動時にも反映できないかな～との要望を「ZENKYUさん」より [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><a href="https://www.kazuban.com/blog/nc-check-to-dxf/">前回公開した、ＮＣデータ確認ソフト</a>はエディタ部分のフォントを変更できる仕様としました。<br>でも、再起動時には初期状態へ戻ってしまうため、フォントの設定状態を、次回起動時にも反映できないかな～との要望を「ZENKYUさん」よりいただいたので、やってみました。<br>前回起動時の状態の保存・取出しに、初期化ファイル（INIファイル）を使用し、フォントの設定に、「Font」プロパティを使用したので、覚書として残して置こうと思います。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-6" checked><label class="toc-title" for="toc-checkbox-6">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">エディタ部分のフォントを変更する</a></li><li><a href="#toc2" tabindex="0">ＩＮＩファイルの作成</a><ol><li><a href="#toc3" tabindex="0">ＩＮＩファイル名</a></li><li><a href="#toc4" tabindex="0">自分の実行プログラムの場所を知る</a></li><li><a href="#toc5" tabindex="0">INIファイル名を取得する</a></li><li><a href="#toc6" tabindex="0">INIファイルの読み・書き</a></li></ol></li><li><a href="#toc7" tabindex="0">INIファイルを反映</a><ol><li><a href="#toc8" tabindex="0">アプリのwindow位置設定</a></li><li><a href="#toc9" tabindex="0">フォントの設定</a></li></ol></li><li><a href="#toc10" tabindex="0">状態を保存して終了</a><ol><li><a href="#toc11" tabindex="0">INIファイルへ書き出し</a></li></ol></li><li><a href="#toc12" tabindex="0">前回公開のNcCheck2Dxf.exe にVer3.41として入れ替えました。</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">エディタ部分のフォントを変更する</span></h2>



<p class="wp-block-paragraph">C++Builder でフォントを変更するには、「FontDialog」コンポーネントを使用すれば、簡単に実現できます。<br>例としては、Form に、FontDialogコンポーネントとTMemoやTRichEditを配置して、Fontプロパティに「FontDialog」からのFontを代入するだけです。</p>



<pre class="wp-block-preformatted">if(FontDialog1-&gt;Execute()){
  Memo1-&gt;Font = FontDialog1-&gt;Font;
}</pre>



<p class="wp-block-paragraph">単純にフォントだけを変更する場合はこれでいいのですが、<br>私は「TRichEdit」で、カーソル位置の色を変更したりしているのが原因か？<br>そのカーソル行だけ、うまく変更してくれません。<br>たぶん、「RichEdit1-&gt;SelAttributes」などで、きちんと処理すればよさそうな気もしますがよくわからなかったので、一度エディタ部の内容を一時ファイルへ保存して、フォントを変更後、再度その一時ファイルから、エディタ部へ読み込むような邪道な処理をしています。</p>



<pre class="wp-block-preformatted">UnicodeString temp = "TempFileForFont.txt";
RichEdit1-&gt;Lines-&gt;SaveToFile(temp);
RichEdit1-&gt;Font = FontDialog1-&gt;Font;
RichEdit1-&gt;Lines-&gt;Clear();
RichEdit1-&gt;Lines-&gt;LoadFromFile(temp);
DeleteFile(temp);</pre>



<p class="wp-block-paragraph">なので、一時的に、実行ファイルと同じ場所に一時ファイルが作成されます。<br>また、再度ファイルの読み書き処理をするので、処理時間を懸念しましたが、私の環境ではそれほど気にならなかったので、こんな処理としました。</p>



<h2 class="wp-block-heading"><span id="toc2">ＩＮＩファイルの作成</span></h2>



<p class="wp-block-paragraph">起動時に前回の状態を再現するには、その状態を記憶しておく必要があります。<br>市販のアプリケーションでは、システムレジストリへ記録しておく場合がよくありますが、このような小さなツールでレジストリを汚したくないので、ＩＮＩファイル仕様で行こうと思います。</p>



<h3 class="wp-block-heading"><span id="toc3">ＩＮＩファイル名</span></h3>



<p class="wp-block-paragraph">INIファイルのファイル名は何がいいでしょう？<br>通常は実行プログラム名の拡張子を「INI」に変換した名前が一般的だと思います。</p>



<h3 class="wp-block-heading"><span id="toc4">自分の実行プログラムの場所を知る</span></h3>



<p class="wp-block-paragraph">プログラムを実行する場合、そのEXEファイルをクリックして実行する場合や、必要なファイルをドロップしたり、コマンドラインからパラメータを追加して実行する場合などがあります。<br>その場合、パラメータは「ParamStr(int)」で取得できますが<br>自分自身の実行プログラムのパスは「ParamStr(0)」で知ることができます。<br>また「Application-&gt;ExeName」プロパティでも取得できます。</p>



<pre class="wp-block-preformatted">UnicodeString MyPath1 = ParamStr(0);
UnicodeString MyPath2 = Application-&gt;ExeName;</pre>



<p class="wp-block-paragraph">さらに、ファイルパスから、上層のディレクトリ名を知りたい場合には、<br>「ExtractFileDir(UnicodeString)」関数が使えます。</p>



<pre class="wp-block-preformatted">UnicodeString MyDir = ExtractFileDir(MyPath1);</pre>



<h3 class="wp-block-heading"><span id="toc5">INIファイル名を取得する</span></h3>



<p class="wp-block-paragraph">INIファイル名は、自分自身の実行ファイルパス名から、拡張子のみを変更した名前にする事にします。<br>結構面倒だな～と思っていたら、便利な関数がありました。<br><a rel="noopener" href="http://docwiki.embarcadero.com/Libraries/Sydney/ja/System.SysUtils.ChangeFileExt" target="_blank">「ChangeFileExt(UnicodeString FileName, UnicodeString Extension)」</a>です。<br>最初の引数に「ファイル名」、次に「拡張子」を与えます。<br>ここで注意！指示する「拡張子」には、「.」が必要です。</p>



<pre class="wp-block-preformatted">UnicodeString IniFilePath = ChangeFileExt(MyPath1,".INI");</pre>



<h3 class="wp-block-heading"><span id="toc6">INIファイルの読み・書き</span></h3>



<p class="wp-block-paragraph">最初は、WindowsSDK の「GetPrivateProfileString」と「WritePrivateProfileString」を利用してプログラムしていましたが<br>な～んだ、<a rel="noopener" href="http://docwiki.embarcadero.com/RADStudio/Sydney/ja/TIniFile_%E3%81%8A%E3%82%88%E3%81%B3_TMemIniFile_%E3%81%AE%E4%BD%BF%E7%94%A8" target="_blank">C++Builder にも「TIniFile」クラスが用意されていました</a>。<br>INIファイルは、基本的には「セクション名」「識別キー」「値」の３要素で構成されます。<br>作成するソフトでは、起動時のWindowの「場所」「幅」「フォント属性」が記録されるようにします。</p>



<p class="wp-block-paragraph" id="ex">・</p>



<pre class="wp-block-preformatted">[WINDOW]
Top=120
Left=80
Width=1174
Height=752
[FONT]
Name=Tahoma
Size=10
Bold=0
Italic=0
UnderLine=0
StrikeOut=0</pre>



<h2 class="wp-block-heading"><span id="toc7">INIファイルを反映</span></h2>



<p class="wp-block-paragraph">C++では、起動時にはまずコンストラクタが呼ばれますから、コンストラクタで読み込んで反映させます。</p>



<h3 class="wp-block-heading"><span id="toc8">アプリのwindow位置設定</span></h3>



<p class="wp-block-paragraph">アプリの表示位置は、Formの「Top」「Left」「Width」「Height」で設定できます。<br><a rel="noopener" href="http://docwiki.embarcadero.com/RADStudio/Sydney/ja/TIniFile_%E3%81%8A%E3%82%88%E3%81%B3_TMemIniFile_%E3%81%AE%E4%BD%BF%E7%94%A8" target="_blank">説明サイトを参考に</a>「ReadInteger」で識別キーの整数値が取得できます。<br><a href="#ex">上の例では</a>、</p>



<pre class="wp-block-preformatted">Top = ini-&gt;ReadInteger("WINDOW","Top",100);
Left = ini-&gt;ReadInteger("WINDOW","Left",100);</pre>



<p class="wp-block-paragraph">でアプリウィンドウの左上が決定できます。<br>幅、高さも同様です。</p>



<h3 class="wp-block-heading"><span id="toc9">フォントの設定</span></h3>



<p class="wp-block-paragraph">フォントサイズやフォント名は、同様に「ReadInteger」「ReadString」で取得できます。<br>ちょっと変数形式が違うのが、「スタイル」や「文字飾り」です。<br>このプロパティには<a rel="noopener" href="https://edn.embarcadero.com/jp/article/39974" target="_blank">「集合型」が使われている</a>ようです。<br>「集合型」は、「&lt;&lt;」と「&gt;&gt;」演算子を使って、追加、削除します。<br>フォントのスタイルには、「太字」「斜体」「取り消し線」「下線」がありますが、それぞれ「fsBold」「fsItalic」「fsStrikeOut」「fsUnderline」で設定します。</p>



<pre class="wp-block-preformatted">FontDialog1-&gt;Font-&gt;Style = FontDialog1-&gt;Font-&gt;Style &lt;&lt; fsBold;
FontDialog1-&gt;Font-&gt;Style = FontDialog1-&gt;Font-&gt;Style &lt;&lt; fsItalic;
FontDialog1-&gt;Font-&gt;Style = FontDialog1-&gt;Font-&gt;Style &gt;&gt; fsStrikeOut;</pre>



<h2 class="wp-block-heading"><span id="toc10">状態を保存して終了</span></h2>



<p class="wp-block-paragraph">C++Builder では、フォームが閉じられる時に「FormDestroy」イベントが発生しますから、この場所に、INIファイルへの書き込み処理を定義します。</p>



<h3 class="wp-block-heading"><span id="toc11">INIファイルへ書き出し</span></h3>



<p class="wp-block-paragraph">書き出しも、読込みと同様に、<a href="http://docwiki.embarcadero.com/RADStudio/Sydney/ja/TIniFile_%E3%81%8A%E3%82%88%E3%81%B3_TMemIniFile_%E3%81%AE%E4%BD%BF%E7%94%A8">「TIniFile」クラスを利用</a>します。</p>



<pre class="wp-block-preformatted">ini-&gt;WriteInteger("WINDOW","Top",Top);
ini-&gt;WritwInteger("WINDOW","Left",Left);</pre>



<h2 class="wp-block-heading"><span id="toc12">前回公開のNcCheck2Dxf.exe にVer3.41として入れ替えました。</span></h2>



<p class="wp-block-paragraph">上述のC++Builderの機能を使用して、前回終了時の状態を再現できるような処理を加えてみました。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><a href="https://www.kazuban.com/blog/nc-check-to-dxf/#DownLoad">こちらから、ダウンロードできます。</a></p></blockquote>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.kazuban.com/blog/init-file/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
		<item>
		<title>Ｇコード確認ソフトが進化しました。改造に利用した、C++BuilderのCancasを説明しています。</title>
		<link>https://www.kazuban.com/blog/nc-check-ver2/</link>
					<comments>https://www.kazuban.com/blog/nc-check-ver2/#comments</comments>
		
		<dc:creator><![CDATA[kazuban]]></dc:creator>
		<pubDate>Sun, 11 Oct 2020 07:14:40 +0000</pubDate>
				<category><![CDATA[C++Builder]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[G-Code]]></category>
		<category><![CDATA[NCプログラム]]></category>
		<category><![CDATA[フリーソフト]]></category>
		<guid isPermaLink="false">https://www.kazuban.com/blog/?p=3426</guid>

					<description><![CDATA[前回公開したソフト、進化させました。変更点の一番の目玉は、キャンパスのサイズ変更と、図形の拡大・縮小です。この機能追加は、自分自身でもかなりC++Builder の勉強になりましたのでC++Builderでの図形描画方法 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><a href="https://www.kazuban.com/blog/nc-check/">前回公開したソフト</a>、進化させました。<br>変更点の一番の目玉は、キャンパスのサイズ変更と、図形の拡大・縮小です。<br>この機能追加は、自分自身でもかなりC++Builder の勉強になりましたので<br>C++Builderでの図形描画方法なども記事にしてみようと思います。<br>簡単な図形描画のC++Builder のサンプルソースも添付します。<br>他は、レイアウト変更や、真円への対応。<br>G９０・G９１モードの表示。<br>データの読み込み速度が、少し早くなりました。<br>後は、気が付いた、不具合の対処などになります。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-8" checked><label class="toc-title" for="toc-checkbox-8">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">バージョン２での変更点</a><ol><li><a href="#toc2" tabindex="0">キャンパスサイズ変更</a></li><li><a href="#toc3" tabindex="0">拡大・縮小</a></li><li><a href="#toc4" tabindex="0">移動</a></li><li><a href="#toc5" tabindex="0">真円</a></li><li><a href="#toc6" tabindex="0">ダウンロード</a></li></ol></li><li><a href="#toc7" tabindex="0">C++BuilderでＧコード図形化の方法</a><ol><li><a href="#toc8" tabindex="0">NCファイル読み込みの高速化</a></li><li><a href="#toc9" tabindex="0">エディタや図形領域のリサイズ</a></li><li><a href="#toc10" tabindex="0">C++Builderに図形を描かせる</a><ol><li><a href="#toc11" tabindex="0">Canvas 座標系</a></li><li><a href="#toc12" tabindex="0">数学座標系</a></li></ol></li><li><a href="#toc13" tabindex="0">図形のリサイズ</a></li><li><a href="#toc14" tabindex="0">マウスホイールの利用</a></li><li><a href="#toc15" tabindex="0">C++Builderのサンプルソース添付</a></li></ol></li><li><a href="#toc16" tabindex="0">C++Builder は最高！</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">バージョン２での変更点</span></h2>



<h3 class="wp-block-heading"><span id="toc2">キャンパスサイズ変更</span></h3>



<figure class="wp-block-image size-large"><img decoding="async" src="https://www.kazuban.com/blog/wp-content/uploads/2020/10/small.png" alt=""/></figure>



<p class="wp-block-paragraph">ウィンドウサイズを変更する事で、図形描画領域を変更できるようになりました。<br>エディタ領域も変更できます。</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://www.kazuban.com/blog/wp-content/uploads/2020/10/big-1024x631.png" alt=""/></figure>



<p class="wp-block-paragraph">この機能の実現は、なかなかできませんでした。<br>イメージとしての拡大・縮小は簡単ですが、そうすると、図形が変形されてしまいます。<br>図形としての、拡大縮小の方法が見つかりませんでしたが<br>やっと見つけた、<a rel="noopener" href="https://birdhouse.hateblo.jp/entry/2016/01/13/212108" target="_blank">こちらサイトの記事が参考になりました。</a><br>インターネット様様ですねぇ～<br>詳細は後ほど覚書として、書き残しておきます。</p>



<h3 class="wp-block-heading"><span id="toc3">拡大・縮小</span></h3>



<p class="wp-block-paragraph">マウスの「MouseWheel」イベントを利用して実現しました。<br>ただし、描画レスポンスが悪いため、データ量が多いとホイール操作への追従が即座に反映されません。<br>下段の「SetScale」横で、拡大率を入力したほうが速く描画できます。<br>「MouseWheel」イベントはC++Builderで は大元の「Form」しか、このイベントがありません。<br>図形を描くキャンパス上でのみマウスホイールに対応したい場合には、マウスの位置がキャンパス上がどうかの監視が必要になります。<br>この方法も、後ほど書いておこうと思います。</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://www.kazuban.com/blog/wp-content/uploads/2020/10/scale-1024x693.png" alt=""/></figure>



<h3 class="wp-block-heading"><span id="toc4">移動</span></h3>



<p class="wp-block-paragraph">「移動」は、マウスクリック位置をキャンパス中心に移動するような操作になります。<br>通常のCADのような、マウス右でのドラッグのような操作は実現できませんでした。</p>



<h3 class="wp-block-heading"><span id="toc5">真円</span></h3>



<p class="wp-block-paragraph">始点・終点が同一の円弧補間指令の真円指令に対応しました。</p>



<figure class="wp-block-gallery columns-1 is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex"><ul class="blocks-gallery-grid"><li class="blocks-gallery-item"><figure><img loading="lazy" decoding="async" width="1024" height="615" src="https://www.kazuban.com/blog/wp-content/uploads/2020/10/circle-1024x615.png" alt="" data-id="3437" data-full-url="https://www.kazuban.com/blog/wp-content/uploads/2020/10/circle.png" data-link="https://www.kazuban.com/blog/?attachment_id=3437" class="wp-image-3437" srcset="https://www.kazuban.com/blog/wp-content/uploads/2020/10/circle-1024x615.png 1024w, https://www.kazuban.com/blog/wp-content/uploads/2020/10/circle-300x180.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2020/10/circle-768x461.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2020/10/circle.png 1152w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure></li></ul></figure>



<h3 class="wp-block-heading"><span id="toc6">ダウンロード</span></h3>



<p class="wp-block-paragraph"><s>Vector へは、現在登録申請中です。<br>登録完了しましたら、お知らせします</s>。<br><a href="https://www.vector.co.jp/soft/dl/winnt/business/se521853.html">登録されました、こちらからもダウンロード</a>できます</p>



<div class="wp-block-media-text alignwide is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="451" height="262" src="https://www.kazuban.com/blog/wp-content/uploads/2020/10/NcCheck2_6.png" alt="" class="wp-image-3549 size-full" srcset="https://www.kazuban.com/blog/wp-content/uploads/2020/10/NcCheck2_6.png 451w, https://www.kazuban.com/blog/wp-content/uploads/2020/10/NcCheck2_6-300x174.png 300w" sizes="(max-width: 451px) 100vw, 451px" /></figure><div class="wp-block-media-text__content">
<ul class="wp-block-list"><li><a href="https://www.kazuban.com/blog/free_soft/#Soft05">こちらからダウンロードできます(Ver2.6)</a></li><li>始めて実行する時には、セキュリティのメッセージが出ると思います。</li><li>「詳細情報」から「実行」をクリックしてください。</li></ul>
</div></div>



<h2 class="wp-block-heading"><span id="toc7">C++BuilderでＧコード図形化の方法</span></h2>



<h3 class="wp-block-heading"><span id="toc8">NCファイル読み込みの高速化</span></h3>



<p class="wp-block-paragraph">このソフトの全体の流れとしては、<br>・ドロップされた、NCファイルを読み込み<br>・一ブロックごとに、座標やGコードを分析し<br>・図形データへ変換<br>・Image Canvasで描画<br>の流れで、処理しています。<br>そんな事もあり、NCファイルは一度「TStringList」へ登録し、その「TStringList」から、一行ずつ、「TRichEdit」へ追加後<br>さらに「TStringList」から、一行ずつ、NCデータ分析処理を行っていました。</p>



<pre class="wp-block-preformatted">TStringList *list = new TStringList;
reditNcFile-&gt;Lines-&gt;Clear();
list-&gt;LoadFromFile(FilePath);
for(int i=0; i &lt; list-&gt;Count; i++){
  reditNcFile-&gt;Lines-&gt;Add(list-&gt;Strings[i]);
}</pre>



<p class="wp-block-paragraph">「TRichEdit」への読み込みは、こんな感じです。<br>「TStringList」は便利なので、結構よく使います。<br>ところが、大きめのファイルを読み込んでみると、結構時間がかかります。<br>読込み後のNCデータの分析ルーチンは、私が書いたコードなので、ここが遅いのは私のレベルの問題でしょうがないとしても、「TRichEdit」への読み込み時点で結構時間がかかっていました。<br>いろいろ検索しても、前回の公開時には見つからず、このまま公開しましたが、なんの事はない、「TRichEdit」から直接ファイルを読み込めば、瞬時に読み込みは完了し、「TRichEdit」の「Lines」を「TStrings *」で参照するほうがはるかに高速なのに気が付きました。<br></p>



<pre class="wp-block-preformatted">reditNcFile-&gt;Lines-&gt;Clear();
reditNcFile-&gt;Lines-&gt;LoadFromFile(FilePath) ;　//直接読込む
TStrings *list;
list = reditNcFile-&gt;Lines;
</pre>



<p class="wp-block-paragraph" id="block-a7d09c5e-3487-4045-95fe-04449ad874cb">さらに、NCデータファイルから一行ずつ文字列として取り出す場合<br>TStringList の、Strings[i]　で取り出していましたが、<br>Ｃ言語標準の、FILE * でfopen し、fgets で取り出したほうがデータによっては高速でした<br><br>私の環境では、1MBのデータで、前バージョンでは<br>読込み：56秒 + 図形分析：76秒 = 132秒でしたが<br>今回のバージョンでは、<br>読込みは瞬時に終了し分析完了まで、約77秒ぐらいでした。<br>さらに、データの最後をクリックして、全体表示させてみると<br>前バージョンでは、5分以上でしたが、今回バージョンでは、２秒程度でした。<br>図形表示に関しては、前回はNCの一ブロックずつ描画処理していましたが<br>今回からは、処理した図形データを保存しておいて、一気に描画するような仕様に変更したのでクリック描画はかなり高速になりました。<br>分析処理ももう少し速くしたいのですが、この部分の改善には最初からの見直が必要で、継ぎ足し継ぎ足しでかなり肥大化してしまっているので、今更難しいかなぁと思っているところです。</p>



<h3 class="wp-block-heading"><span id="toc9">エディタや図形領域のリサイズ</span></h3>



<p class="wp-block-paragraph">「Form」に「Memo」や「Image」を配置する際、まず土台として「TPanel」コンポーネントでレイアウトし、その上にImageコンポーネントを配置するようにします。<br>土台の「TPanel」は、「Align」プロパティで、「alTop」「alLeft」「alClient」などに設定しておくと、ウィンドウのリサイズ時に追従していきます。</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://www.kazuban.com/blog/wp-content/uploads/2020/10/Resize-1024x697.png" alt=""/></figure>



<h3 class="wp-block-heading"><span id="toc10">C++Builderに図形を描かせる</span></h3>



<p class="wp-block-paragraph"><a rel="noopener" href="http://docwiki.embarcadero.com/RADStudio/Sydney/ja/%E3%82%AD%E3%83%A3%E3%83%B3%E3%83%90%E3%82%B9%E3%81%AE%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%B0%E3%83%A9%E3%83%95%E3%82%A3%E3%83%83%E3%82%AF_%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%82%92%E6%8F%8F%E7%94%BB%E3%81%99%E3%82%8B" data-type="URL" data-id="http://docwiki.embarcadero.com/RADStudio/Sydney/ja/%E3%82%AD%E3%83%A3%E3%83%B3%E3%83%90%E3%82%B9%E3%81%AE%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%B0%E3%83%A9%E3%83%95%E3%82%A3%E3%83%83%E3%82%AF_%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%82%92%E6%8F%8F%E7%94%BB%E3%81%99%E3%82%8B" target="_blank">C++Builder には、TCanvasオブジェクトが用意されている</a>ので、これを使用すれば簡単に図形を描く事ができます。<br>TCanvasは、TFormやTImage などのプロパティとして用意されているので、まずは対象のオブジェクトを配置して、そこに描く事になります。<br>例えば、上でPanelを２個配置しましたが、TPanelにはCanvasプロパティはないので、その上にTImage を配置して、そこに図形を描いてみます。<br>Panel2の上に、Image1を配置して、「Align」プロパティを「alClient」に設定します。<br>その後、Form1のFormCreateイベントに、線を描く指令を追加すると起動した時に図形が描画されます。</p>



<pre class="wp-block-preformatted">void __fastcall TForm1::FormCreate(TObject *Sender)
{
  Image1-&gt;Canvas-&gt;MoveTo(100,100);
  Image1-&gt;Canvas-&gt;LineTo(200,200);
  Image1-&gt;Canvas-&gt;AngleArc(200,200,60,10,300);
  Image1-&gt;Canvas-&gt;LineTo(300,300);
}</pre>



<figure class="wp-block-image size-large"><img decoding="async" src="https://www.kazuban.com/blog/wp-content/uploads/2020/10/Draw01.png" alt=""/></figure>



<p class="wp-block-paragraph">こんな感じで、簡単に図形を描くことができます。<br>ただし、Canvas の座標系は一般的な数学の座標系と方向が違いますので<br>ＮＣデータの図形化のような、数学座標系で図形を描きたい場合には、数学座標をCanvas座標系への変換が必要になります。<br></p>



<h4 class="wp-block-heading"><span id="toc11">Canvas 座標系</span></h4>



<figure class="wp-block-image size-large"><img decoding="async" src="https://www.kazuban.com/blog/wp-content/uploads/2020/10/CanvasCoordinate.png" alt=""/></figure>



<h4 class="wp-block-heading"><span id="toc12">数学座標系</span></h4>



<div class="wp-block-media-text alignwide is-stacked-on-mobile" style="grid-template-columns:60% auto"><figure class="wp-block-media-text__media"><img decoding="async" src="https://www.kazuban.com/blog/wp-content/uploads/2020/10/Coordinate.png" alt=""/></figure><div class="wp-block-media-text__content">
<p class="wp-block-paragraph">一般的にＮＣ機械のＸＹ平面の<br>座標系は数学座標系と同じなので<br>（最近では稀ですが違う機械も存在します）<br>ＮＣデータを描画させる時には、NC座標からCanvas座標への変換が必要になります。<br>これ単純にY軸の符号を変換だけでなく、原点をキャンパスのどこへもっていくかなど、ちょっと面倒です。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc13">図形のリサイズ</span></h3>



<p class="wp-block-paragraph">図形を描いた、ウィンドウをリサイズしてみます。</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://www.kazuban.com/blog/wp-content/uploads/2020/10/CanvasResize-1.png" alt=""/></figure>



<p class="wp-block-paragraph">あれぇ～<br>Panelはリサイズに追従しているのに、Image1上の図形は追従しません。<br>「Align」プロパティも「alClient」に設定しているのに何でだろう？<br>ここで結構悩みました。<br>実は、TImage のStretchプロパティをtrue に設定すれば追従するようになります。</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://www.kazuban.com/blog/wp-content/uploads/2020/10/CanvasResizeStretch.png" alt=""/></figure>



<p class="wp-block-paragraph">ところが、画像としての追従なので、形状が歪になったり、線の太さが変わってしまったり、図形としては成り立たなくなります。<br>じゃぁどうすればいいのか？<br>やっと見つけたのが、<a rel="noopener" href="https://birdhouse.hateblo.jp/entry/2016/01/13/212108" data-type="URL" data-id="https://birdhouse.hateblo.jp/entry/2016/01/13/212108" target="_blank">こちらのブログ</a>でした。<br>「Delphi言語」の記事だったので、なかなか検索できなかったのでしょう。<br>言語の構文は違いますが、クラス名やプロパティはC++Builder も大差ないので参考にさせていただきました。</p>



<pre class="wp-block-preformatted">TBitmap *ImageA = new TBitmap;
ImageA-&gt;Width = Panel2-&gt;Width;
ImageA-&gt;Height = Panel2-&gt;Height;
Image1-&gt;Picture-&gt;Bitmap = ImageA;
delete ImageA;</pre>



<p class="wp-block-paragraph">こんな感じで、Image1 の土台であるPanel2 の現状サイズを取得して<br>新規に生成した、ImageAのサイズを合わせ<br>そのImageAを、Image1-&gt;Picture-&gt;Bitmap へ代入する事で実現できました。</p>



<h3 class="wp-block-heading"><span id="toc14">マウスホイールの利用</span></h3>



<p class="wp-block-paragraph">マウスホイールで拡大・縮小をさせたいと思います。<br>マウスホイールは、TForm のMouseWheelイベントでは処理できますが<br>図形キャンパスの、TImageにはこのイベントがありません。<br>したがって、図形キャンパス内での、マウスホイール動作を処理したい場合には<br>マウスがTImage内かどうかの判定をする必要があります。<br>コントロール内でマウスを移動させたか？は<br>TImageの、onMouseMoveイベントで処理できます。<br>コントロール外へ移動したか？は<br>onMouseLeaveイベントで処理できます。<br>これを利用して、グローバル変数でマウス位置の状態を記録しておいて<br>コントロール内でのマウスホイール操作の場合のみ、拡大・縮小処理を行いました。</p>



<h3 class="wp-block-heading"><span id="toc15">C++Builderのサンプルソース添付</span></h3>



<p class="wp-block-paragraph">以上の機能を盛り込んだ、サンプルソースファイルを添付します<br>数学座標系指令をキャンパス座標系へ変換し、リサイズやマウスでの拡大・縮小ができます。</p>



<div class="wp-block-group is-layout-flow wp-block-group-is-layout-flow">
<div class="wp-block-media-text alignwide is-stacked-on-mobile"><figure class="wp-block-media-text__media"><a href="https://www.kazuban.com/soft/CanvasSample.zip"><img decoding="async" src="https://www.kazuban.com/blog/wp-content/uploads/2020/10/Sample.png" alt=""/></a></figure><div class="wp-block-media-text__content">
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>C++Builder のサンプルソースファイルは、左よりダウンロードできます</p></blockquote>
</div></div>
</div>



<h2 class="wp-block-heading"><span id="toc16">C++Builder は最高！</span></h2>



<p class="wp-block-paragraph">プログラミングに興味がある方で、とりあえず簡単にビジュアル的なプログラムを作成してみたいと思っている人にとっては、最適なツールだと思います。<br>少し複雑な処理をさせようと思うと、C++の知識は必要になってきますが、<br>ちょっとした計算をさせたい場合は、エクセルマクロ的な操作で実行ファイル「EXE」を作成できます。<br>ＤＬＬのいらない、ネイティブな実行ファイルが作成できるので、エクセルを立ち上げないと動作しないエクセルマクロよりも簡単に利用できます。<br>こんな素晴らしいツールが個人使用なら無料で使用できますから、プログラムに興味あるかたは是非体験してみてください。<br></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.kazuban.com/blog/nc-check-ver2/feed/</wfw:commentRss>
			<slash:comments>14</slash:comments>
		
		
			</item>
		<item>
		<title>C++Builder TMemo の操作</title>
		<link>https://www.kazuban.com/blog/cbuilder-tmemo/</link>
		
		<dc:creator><![CDATA[kazuban]]></dc:creator>
		<pubDate>Wed, 01 Jan 2020 05:58:42 +0000</pubDate>
				<category><![CDATA[C++Builder]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[RichEdit]]></category>
		<category><![CDATA[TMemo]]></category>
		<category><![CDATA[カーソル操作]]></category>
		<category><![CDATA[行選択]]></category>
		<category><![CDATA[覚書]]></category>
		<guid isPermaLink="false">https://www.kazuban.com/blog/?p=1606</guid>

					<description><![CDATA[&#160;C++Builder 10.3 Community Edition を使用して、趣味でプログラミングをしていますが、ＮＣデータを扱うソフトを作ってみようと計画しています。 &#160;C++Builderの「 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">&nbsp;C++Builder 10.3 Community Edition を使用して、趣味でプログラミングをしていますが、ＮＣデータを扱うソフトを作ってみようと計画しています。<br> &nbsp;C++Builderの「Memoコンポーメント」を利用すると、簡易なエディタ的な処理をさせる事ができますが、マウスを使わないでのカーソル操作や選択、検索などの処理をさせたかったので、調べてみたところある程度はできそうです。<br>関数化したので、覚書きとして、残しておきます。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-10" checked><label class="toc-title" for="toc-checkbox-10">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">EMBACADERO サポートサイト</a></li><li><a href="#toc2" tabindex="0">関数プロトタイプ</a></li><li><a href="#toc3" tabindex="0">関数の実装</a></li><li><a href="#toc4" tabindex="0">完成</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1"><a href="http://support.embarcadero.com/jp/article/35940"><span style="color:Blue">EMBACADERO サポートサイト</span></a></span></h2>



<p class="wp-block-paragraph"><a href="http://support.embarcadero.com/jp/article/35940">発売元のサポートサイト</a>に情報がありました。<br>C++Builderがサポートしていない機能は、 Performメソッド を使って、Windowsクラスへのメッセージを利用して実現させるようです。</p>



<h2 class="wp-block-heading"><span id="toc2">関数プロトタイプ</span></h2>



<p class="wp-block-paragraph">上記のメッセージを参考に、関数を作成しました。</p>



<pre class="wp-block-preformatted"> //-----------------------------------------------------------------
 // Memo
 // http://support.embarcadero.com/jp/article/35940
 //---------------------------------------------------------------
 // Memoの行数を返す
 int kMemoLineCount(TCustomMemo *memo);

 // Memoのカーソル行番号を返す
 int kMemoCurrentRowNumber(TCustomMemo *memo);

 // Memoの先頭にカーソルを移動する
 void kMemoMoveTop(TCustomMemo *memo);

 // Memoの指定行番号にカーソルを移動する、省略＝トップ
 void kMemoMoveRowNumber(TCustomMemo *memo,int row=1);

 // Memoのカーソル行を指定行だけ下に移動する、省略＝１行
 void kMemoMoveDown(TCustomMemo *memo,int number=1);

 // Memoのカーソル行を指定行だけ上に移動する、省略＝１行
 void kMemoMoveUp(TCustomMemo *memo,int number=1);

 // Memoの指定行を選択する、省略＝トップ
 void kMemoSelectRowNumber(TCustomMemo *memo,int row=1);

 // Memoの指定行の文字数、省略＝カレント行
 int kMemoGetCharCount(TCustomMemo *memo,int row=0);

 // Memoのカーソル行の指定位置から指定文字数を選択する、省略＝すべて
 void kMemoSelectCurrentRow(TCustomMemo *memo,int start=0,int length=0);

 // Memoの1行下が見えるようにスクロールします。
 void kMemoScrollLineDown(TCustomMemo *memo);

 // Memoの1行下が見えるようにスクロールします。
 void kMemoScrollLineDown(TCustomMemo *memo);

 // Memoの1行上が見えるようにスクロールします
 void kMemoScrollLineUp(TCustomMemo *memo);

 // Memoの1ページ下が見えるようにスクロールします。
 void kMemoScrollPageDown(TCustomMemo *memo);

 // Memoの1ページ上が見えるようにスクロールします。
 void kMemoScrollPageUp(TCustomMemo *memo)
;
 // Memoの左右上下にスクロールさせます。
 void kMemoScrollRowCol(TCustomMemo *memo,int col,int row);

 // Memoのカーソルより次へ文字列を検索します。
 void kMemoSearchNext(TCustomMemo *memo,UnicodeString Key,bool select=true);

 // Memoのカーソルより前方向に文字列を検索します。
 void kMemoSearchPrevious(TCustomMemo *memo,UnicodeString Key,bool select=true);

 // Memoの実際に目にみえている最初の行の行番号を返します（最初の行は0）
 int kMemoGetPageTopRow(TCustomMemo *memo);

 // RichEditの指定行の色を変更する
 TColor kRichEditChangeColor(TRichEdit *richedit,TColor color,int row=1);
</pre>



<h2 class="wp-block-heading"><span id="toc3">関数の実装</span></h2>



<pre class="wp-block-preformatted"> //--------------------------------------------------------------
 //-------- Memo ------------------------
 //-------------------------------------------------------------
 // TMemo の行数
 int kMemoLineCount(TCustomMemo *memo)
 {
     int count = memo-&gt;Lines-&gt;Count;
     return count;
 }

 // TMemo の現在のカーソル行位置（最初は１）
 int kMemoCurrentRowNumber(TCustomMemo *memo)
 {
     int row = memo-&gt;Perform(EM_LINEFROMCHAR,-1,0)+1;
     return row;
 }

 // Memoの先頭にカーソルを移動する
 void kMemoMoveTop(TCustomMemo *memo)
 {
     memo-&gt;SelStart = memo-&gt;Perform(EM_LINEINDEX,0,0);
 }

 // Memoの指定行番号にカーソルを移動する、省略＝トップ
 void kMemoMoveRowNumber(TCustomMemo *memo,int row)
 {
     memo-&gt;SelStart = memo-&gt;Perform(EM_LINEINDEX,row-1,0);
     memo-&gt;SetFocus();
 }

 // Memoのカーソル行を指定行だけ下に移動する、省略＝１行
 void kMemoMoveDown(TCustomMemo *memo,int number)
 {
     int current = kMemoCurrentRowNumber(memo);
     kMemoMoveRowNumber(memo,current+number);
 }

 // Memoのカーソル行を指定行だけ上に移動する、省略＝１行
 void kMemoMoveUp(TCustomMemo *memo,int number)
 {
     int current = kMemoCurrentRowNumber(memo);
     kMemoMoveRowNumber(memo,current-number);
 }

 // Memoの指定行を選択する、省略＝トップ
 void kMemoSelectRowNumber(TCustomMemo *memo,int row)
 {
     int count = memo-&gt;Lines-&gt;Count;
     if(count&lt;1) return;    
     UnicodeString str = memo-&gt;Lines-&gt;Strings[row-1];
     int len = str.Length();
     kMemoMoveRowNumber(memo,row);
     memo-&gt;SelLength = len;
 }

 // Memoの指定行の文字数、省略＝カレント行
 int kMemoGetCharCount(TCustomMemo *memo,int row)
 {
     int rength = 0;
     if(row == 0){
         row = kMemoCurrentRowNumber(memo);
     }
     if(row&gt;0){
         rength = memo-&gt;Lines-&gt;Strings[row-1].Length();
     }
     return rength;
 }

 // Memoのカーソル行の指定位置から指定文字数を選択する、省略＝すべて
 void kMemoSelectCurrentRow(TCustomMemo *memo,int start,int length)
 {
     if(start==0 &amp;&amp; length==0){
         kMemoSelectRowNumber(memo);
         return;
     }
     int row = kMemoCurrentRowNumber(memo);
     int len = kMemoGetCharCount(memo,row);
     kMemoMoveRowNumber(memo,row);
     if((start+length)&gt;len){
         length = len-start+1;
     }
     memo-&gt;SelStart += (start-1);
     memo-&gt;SelLength = length;
 }

 // Memoの1行下が見えるようにスクロールします。
 void kMemoScrollLineDown(TCustomMemo *memo)
 {
     memo-&gt;Perform(EM_SCROLL, SB_LINEDOWN, 0);
 }

 // Memoの1行上が見えるようにスクロールします
 void kMemoScrollLineUp(TCustomMemo *memo)
 {
     memo-&gt;Perform(EM_SCROLL, SB_LINEUP, 0);
 }

 // Memoの1ページ下が見えるようにスクロールします。
 void kMemoScrollPageDown(TCustomMemo *memo)
 {
     memo-&gt;Perform(EM_SCROLL, SB_PAGEDOWN, 0);
 }

 // Memoの1ページ上が見えるようにスクロールします。
 void kMemoScrollPageUp(TCustomMemo *memo)
 {
     memo-&gt;Perform(EM_SCROLL, SB_PAGEUP, 0);
 }

 // Memoの上下左右にスクロールさせます。
 void kMemoScrollRowCol(TCustomMemo *memo,int row,int col)
 {
     memo-&gt;Perform(EM_LINESCROLL, row, col);
 }

 // Memoの実際に目にみえている最初の行の行番号を返します（最初の行は1）
 int kMemoGetPageTopRow(TCustomMemo *memo)
 {
     int row = memo-&gt;Perform(EM_GETFIRSTVISIBLELINE, 0, 0);
     return row+1;
 }

 // Memoのカーソルより次へ文字列を検索します。
 void kMemoSearchNext(TCustomMemo *memo,UnicodeString Key,bool select)
 {
     int count = memo-&gt;Lines-&gt;Count;
     int current = kMemoCurrentRowNumber(memo);
     UnicodeString str;
     int pos;
     int len = Key.Length();
     for(int i= current;iLines-&gt;Strings[i];
         pos = str.Pos(Key);
         if(pos){
             kMemoMoveRowNumber(memo,i+1);
             if(select){
                 kMemoSelectCurrentRow(memo,pos,len);
             }
             break;
         }
     }
 }

 // Memoのカーソルより手前に文字列を検索します。
 void kMemoSearchPrevious(TCustomMemo *memo,UnicodeString Key,bool select)
 {
     int count = memo-&gt;Lines-&gt;Count;
     int current = kMemoCurrentRowNumber(memo)-1;
     UnicodeString str;
     int pos;
     int len = Key.Length();
     for(int i= current;i&gt;=0;i--){
         str = memo-&gt;Lines-&gt;Strings[i-1];
         pos = str.Pos(Key);
         if(pos){
             kMemoMoveRowNumber(memo,i);
             if(select){
                 kMemoSelectCurrentRow(memo,pos,len);
             }
             break;
         }
     }
 }

 // RichEditの指定行の色を変更する
 TColor kRichEditChangeColor(TRichEdit *redit,TColor color,int row)
 {
     TColor cl = redit-&gt;SelAttributes-&gt;Color;
     kMemoSelectRowNumber(redit,row);
     redit-&gt;SelAttributes-&gt;Color = color;
     redit-&gt;SelLength = 0;
   return cl;
 }</pre>



<h2 class="wp-block-heading"><span id="toc4">完成</span></h2>



<p class="wp-block-paragraph">とりあえず、作ってみましたが、簡単にしか検証していません。<br>もし、使用する場合には、ご注意ください。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>C++Builder Community Edition　のライセンス更新</title>
		<link>https://www.kazuban.com/blog/cbuilder-license-update/</link>
		
		<dc:creator><![CDATA[kazuban]]></dc:creator>
		<pubDate>Mon, 29 Jul 2019 07:51:48 +0000</pubDate>
				<category><![CDATA[C++Builder]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[C++Builder更新]]></category>
		<category><![CDATA[Community Edition]]></category>
		<category><![CDATA[覚書]]></category>
		<guid isPermaLink="false">https://www.kazuban.com/blog/?p=1027</guid>

					<description><![CDATA[会社では開発環境として、「C++Builder EX6」を使用しています私はソフトウェア開発が商売ではなく、加工が楽になるような、NCデータやNC機械や測定器などのユーティリティソフトを作成していますC++の統合開発環境 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">会社では開発環境として、「C++Builder EX6」を使用しています<br>私はソフトウェア開発が商売ではなく、加工が楽になるような、NCデータやNC機械や測定器などのユーティリティソフトを作成しています<br>C++の統合開発環境としては、やはりMSのVisual C++ がメジャーだと思いますが私は、二昔以上前から使っていた、 Borlandの Turbo C++ からの流れでC++Builderを使っています。<br> C++Builderは、私のような趣味レベルの人間でも比較的簡単にWindows用の実行ファイル 「exe」 を作成できるので便利です<br>C++Builder Community Editionは、売上が年間5,000 USドル未満と言う制限以内であれば無料で使用する事ができます<br>前回、ダウンロード＆インストールした Community Edition が１年間のライセンスが終了しそうなので、更新したですが、始めてインストールした時に少し苦労したので、覚書きとして書き残しておきます<br></p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-12" checked><label class="toc-title" for="toc-checkbox-12">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">C++Builder Community Edition　は、個人使用の場合には無料で使用できます</a><ol><li><a href="#toc2" tabindex="0">ソースコード的には互換性あり</a></li><li><a href="#toc3" tabindex="0">一年間のライセンス</a></li></ol></li><li><a href="#toc4" tabindex="0">更新の方法は？</a><ol><li><a href="#toc5" tabindex="0">Community Edition をダウンロード</a></li><li><a href="#toc6" tabindex="0">メール確認</a></li></ol></li><li><a href="#toc7" tabindex="0">インストール完了</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">C++Builder Community Edition　は、個人使用の場合には無料で使用できます</span></h2>



<p class="wp-block-paragraph">会社で使用している、 「C++Builder EX6」 はもちろん有料版ですが、自宅で使用する場合には、個人使用の場合、無料で使用できる、C++Builder Community Editionを使用させてもらっています<br>ライセンス的には、会社の 「C++Builder EX6」 を自宅PCにインストールして会社と自宅で使用する事もできるみたいですが、 自宅では趣味としてCommunity Edition を使っています</p>



<h3 class="wp-block-heading"><span id="toc2">ソースコード的には互換性あり</span></h3>



<p class="wp-block-paragraph">Community Edition は最新盤ですが、私が書く程度のコードであれば、 C++Builder EX6と双方向でほとんど問題なくどちらでもコンパイルできるはずです。<br>基本的に自宅では、暇つぶし的にフリーソフトを作ったり、ネット上のコードを打ち込んで勉強したりする程度で、切り分けて使っています。</p>



<h3 class="wp-block-heading"><span id="toc3">一年間のライセンス</span></h3>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="633" height="335" src="https://www.kazuban.com/blog/wp-content/uploads/2019/07/10_2.png" alt="" class="wp-image-1031" srcset="https://www.kazuban.com/blog/wp-content/uploads/2019/07/10_2.png 633w, https://www.kazuban.com/blog/wp-content/uploads/2019/07/10_2-300x159.png 300w" sizes="(max-width: 633px) 100vw, 633px" /></figure>



<p class="wp-block-paragraph">ただし、  Community Edition は、１年間のみのライセンスです。<br>今回は、年間のライセンスが切れてしまうので、更新してみました</p>



<h2 class="wp-block-heading"><span id="toc4">更新の方法は？</span></h2>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">更新方法はネット上で検索してもなかなか見つかりませんでしたが、<a href="https://www.embarcadero.com/jp/products/delphi/starter/faq">embarcaderoのFAQページ</a>　の一番下にありました<br>どうも、更新と言うスタイルではなくて、最新バージョンをダウンロード・インストールするようです</p>
</blockquote>



<h3 class="wp-block-heading"><span id="toc5">Community Edition をダウンロード</span></h3>



<p class="wp-block-paragraph">始めての場合でも、更新の場合でも、まずは、ダウンロードが必要です<br><a href="https://www.embarcadero.com/jp/products/cbuilder/starter/free-download">こちらから、名前やメールアドレスなど必要事項を記入してダウンロードできます</a>が、その前に、<a href="https://www.embarcadero.com/jp/products/cbuilder/starter">こちらで利用資格を確認してください。</a><br>必要事項を入力し、「今すぐダウンロード」をクリックすると、入力したアドレスにメールが自動送信されます</p>



<h3 class="wp-block-heading"><span id="toc6">メール確認</span></h3>



<p class="wp-block-paragraph">メールには、「インストール番号」や「ログイン名」などの情報が書かれているのでなくさないようにしてください<br>このメールの中でよく分からなかったのが、</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">添付ファイル (nullnull) で Embarcadero 製品が起動できます。</p>
</blockquote>



<p class="wp-block-paragraph">の所です。<br>私のメール環境では、ファイルは添付されていませんでしたが、その下のほうに、</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">この e-mail にファイルが添付されていない場合には，この e-mail をテキ<br> ストファイルとしてホームディレクトリに (nullnull) という名前で保存してください。</p>
</blockquote>



<p class="wp-block-paragraph">とあります。<br>なんだかよくわかりませんでしたが、とりあえず言われるままに、このEメールをテキストに貼り付けて、「C:\Users\＜ユーザー名＞」の下に「 nullnull 」と言うファイル名にして保存しました。<br>その後、</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">ソフトウェアのダウンロードがまだ完了していない、あるいは再度ダウンロードする必要がある場合は、以下のリンクをクリックしてください: </p>
</blockquote>



<p class="wp-block-paragraph">の、リンクから、ダウンロードしたファイルを実行しました。<br>前回は、この「nullnull」ファイルを保存する場所かタイミングが悪かったのか、ライセンスが中々うまく反映されませんでしたが<br>今回はすんなり、インストールは終了しました</p>



<h2 class="wp-block-heading"><span id="toc7">インストール完了</span></h2>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="630" height="335" src="https://www.kazuban.com/blog/wp-content/uploads/2019/07/10_3.png" alt="" class="wp-image-1032" srcset="https://www.kazuban.com/blog/wp-content/uploads/2019/07/10_3.png 630w, https://www.kazuban.com/blog/wp-content/uploads/2019/07/10_3-300x160.png 300w" sizes="(max-width: 630px) 100vw, 630px" /></figure>



<p class="wp-block-paragraph">これで、あと１年は遊べます。<br>ただし、前のバージョンもまだ生きていますね。<br><a href="http://support.embarcadero.com/article/44752">ライセンスが切れたら、削除しようと思います</a></p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
