C++Builder
C++Builderで、日時関連の処理を書く時、System.TDateTimeクラスを使用します。この、TDateTimeクラスの仕様については、以前に書きました。 まず、TDateTimeクラスについて。 System.TDateTime - XE2 API Documentation つまり、こういうことです。 TDateTi…
TDateTimeクラスとは? さて、今日はタイトルの通り、条件演算子とVCLのTDateTimeクラスの罠に引っかかりました。1時間ぐらい無駄にしたような気がします。今回起こった問題は、とあるTDateTime変数の"hh:nn:ss"情報が消えてしまうというもの。 まず、TDate…
少しお粗末ですが、こんなベースクラスを作ってみました。いつも、ソケット操作の処理は、送受信のスレッドクラスに組み込むのですが、通信先が多いアプリケーションでは、無駄が多いと感じたため、思い切って作りました。これがオブジェクト指向なのか。。…
今日からWSAプログラミングを始めます。WinSock API、つまりWindowsでのソケットプログラミングです。TCPとUDPの送受信を組んでいきます。 まず、WinSocketの初期化メソッドから。 /*! WinSocket初期化 @return true:成功, false:失敗 */ bool __fastcall TU…
以下のように、switch文のcase内でローカル変数を宣言すると、 E2126 case でローカル変数の初期化がとばされた というエラーが発生します。 switch (value) { case 0: int i = 10; // エラー routine(i); break; case 1: break; default: break; } Embarcad…
物騒なタイトルでございます。 社内で開発されたアプリケーションを終了する時、物凄い時間がかかることがあります。もしくは、終了されずにフリーズしてしまったりなど。コードを追いかけていくと、原因は各種スレッドの終了処理にありました。以下のような…
C++Builder 2010から、インクルードガード(ワンタイムインクルード)が、プリプロセッサ指令、つまり#pragmaによりできるようになりました。 今まで、以下のようにマクロを使っていたのを、 #ifndef TSampleH #define TSampleH ・・・ #endif 以下の1文で済…
フォームの移動を抑止したい場合って結構あります。私がよく出くわすのは、XGAで画面いっぱいに広がるフォームを作りたい場合です。TFormのAlignプロパティをalClientにすれば簡単に実現可能なのですが、こうするとSXGA、フルHDなどの大きな解像度で実行した…
アプリケーションの起動に時間を要する場合は、スプラッシュスクリーンを準備します。ちなみに、スプラッシュスクリーンというのは、例えばMicrosoft officeのWord 2013であれば、こういうやつです。 設ける目的は、アプリケーションが起動していることをユ…
そりゃ、直感的なグラフィカルユーザーインターフェースを提供できれば、それに越したことはないのですが、機能の多いアプリケーションでは難しいものです。そこで、ユーザーにオペレーションマニュアルを納めたりするのですが、これをアプリケーションが入…
例えば、デバッグモードの時だけ特定のログを出力したい時、例えば、デバッグモード時はアプリケーション終了確認ダイアログは、うざったいから表示させたくない時、マクロ定義"_DEBUG"の判定でその夢を叶えることができます。 #ifdef _DEBUG ShowMessage("…
エントリのタイトルがすべてです。前の記事で、CSVファイルアクセスクラスを作ってみていたのですが、VCLのTStrings::CommaTextプロパティが、Commaだけでなく、Spaceも区切り文字とみなすことが分かりました。ややこしいプロパティ名しやがってこのー。 CSV…
アプリケーション初期化の方法 最近オブジェクト指向がほんの少しだけ分かるようになってきて、C++Builderでアプリケーションを開発しているのですが、初期化処理をどこで実装するのかが分かりません。INIファイルを読み込んだり、各種DLLを初期化したり等、…
良さげなものがWEBで見つからなかったので、自分で無理矢理作ってみる。※ 2013年11月25日 以下の記事もご覧になった方が良いかもしれません。 TStrings::CommaTextは半角スペースも区切り文字とみなす - 涼の成長記録 TCsvFileAccess.h /*! @file TCsvFileAc…
一般レベルの品質の強固なプログラムを組むためには、どうしたら良いのでしょう。いつになれば、初心者を卒業できるのでしょう。そんなことを思いながら、コードをブログに載せまくって、誰かエンジニアとしてメンターになってくれる人が、現れないかを待ち…
アプリケーションを二重起動しないためのクラスを作成しました。 TDoubleStartingGuard.h /** * @file TDoubleStartingGuard.h * @brief 二重起動防止クラス定義 */ #ifndef TDoubleStartingGuardH #define TDoubleStartingGuardH #include <vcl.h> #pragma hdrstop</vcl.h>…
今回、C++Builder XE2で完全新規のWindowsアプリケーションを開発することになりました。今の私の全ての力を使って、過去最高のアプリケーションを作り上げようと思います。軽く見積もったところ、150クラスぐらいのアプリケーションなのですが、工期が2か月…
※ タイトルの事象は、この記事で解決できません。 前回、以下の記事で'C++Builder 6'を起動できるようになりました。 bcb.droに移動できません - 涼の成長記録 しかし、C++Builder 6の起動問題は、まだ私に着いて回っていることに気が付きました。既存のプロ…
本題 昔のソフトウェアを改修するため、Windows 7マシンに、Borland C++Builder 6をインストールしました。インストールが終わり、起動しようとすると、以下のようなダイアログが表示されました。 'C:\Program Files\Borland\CBuilder6\Bin\bcb.$$$'から'C:\…