nprogram’s blog

気ままに、プログラミングのトピックについて書いていきます

2017-01-01から1年間の記事一覧

無効パラメータハンドラーとセキュア関数でバッファオーバーラン対策 [C++]

C++

はじめに Microsoft Visual Studio Community 2017を使用して、C++コンソールプロジェクトでプログラムを作成しています。 C++警告レベルはデフォルト(レベル3 (/W3))を使用しています。 セキュア関数を使用しないで、strcpy関数で文字列をコピーした場合 以…

C#で、正規表現を使って、一行から複数の文字列を抽出する [C#]

C#で、正規表現を使って、一行から複数の文字列を抽出するには、 名前空間System.Text.RegularExpressionsのMatchクラスのMatch.Groupsプロパティを使用して抽出できます。 Match.Groupsプロパティは、正規表現に一致したグループのコレクションを取得するプ…

C#で、非同期処理学習 [C#]

C#

非同期処理を使う必要性が発生したので、学習用のサイトを記録しておきます。 ufcpp.net www.kekyo.net

C# オブジェクト指向設計の学習 [C#]

C#

メソッドでパラメータを渡すのではなく、オブジェクト生成時に必要なデータをすべて準備する データと、そのデータを使うロジックは、一つのクラスにまとめる 一つ一つのオブジェクトの役割は単純にする 複雑な処理は、オブジェクトを組み合わせて実現する

C# シングルトンパターンの学習 [C#]

C#

C#で簡単なシングルトンパターンを記載してみます。 using System; namespace ConsoleApp2 { class Program { static void Main(string[] args) { SingletonClass instance = SingletonClass.Instance; SingletonClass instance2 = SingletonClass.Instance;…

C#でファイルから一行ずつ読み出し、正規表現を使って文字列を検索し、抽出する [C#]

C#

C#で、ファイルから一行ずつ読み出し、文字列を検索し、抽出する方法はいくつかありますが、正規表現を使う方法が一般的です。 以下に、ファイルから一行ずつ読み出し、正規表現を使って文字列を検索し、抽出するプログラムを記載します。 D:\test.txtに以下…

WPF MVVM基礎の学習 [C#][WPF]

C#

INotifyPropertyChangedインタフェースは、プロパティ値が変更されたことをクライアントに通知するインタフェースです。 ICommandインタフェースは、コマンドを定義するインタフェースです。 操作を実行するためにのExecuteメソッド、操作が実行可能かどうか…

WPFのデータ・バインディングの基礎学習 [C#][WPF]

C#

WPFのデータバインディングを勉強していきます。 開発環境は、Microsoft Visual Studio Community 2015を使用します。 WPFでは、データ・ソース(=モデルなどの、データの提供元)をビュー(=WPFの場合はXAMLコード)上のUI要素と簡単に結び付けるために、…

C++11 文法について [C++]

C++

以下のページに詳しく書いてあります。 cpprefjp.github.io 範囲for文 型推論 ラムダ式 型alias typedef ⇒ usingを使おう typedefはオワコン 新初期化記法 リストイニシャライザ override

Qt Creatorを用いた自動deploy方法 (Windows 編) [Qt]

Qt

Qtアプリを配布する場合は、実行ファイル(*.exe)ファイルのみでは実行できません。 アプリで使用しているDLLファイルがないためです。 そこで、DLLファイルをいざ集めようとするとこんなに大量にDLLファイルが必要になります。 <一例> そこで、windeployqt…

Observerパターンについて [C++]

Observerとは、英語で観察者を意味します。 Observer パターンとは、状態の変化を観察することを目的としたものですが、どちらかというと「観察」よりも「通知」に重点の置かれたものになっています。 あるインスタンスの状態が変化した際に、そのインスタン…

Strategy Patternについて [C++]

はじめに Qiitaに本記事を書き直しました。 Strategyパターン [C#][C++] - Qiita

デザインパターン入門 (リンク編)

はじめに (書籍の紹介) HeadFirstデザインパターンの本のコードのサンプルは、GitHubにあります。 http://www.wickedlysmart.com/headfirstdesignpatterns/code.htmlgithub.com リンク1 codezine.jp パターン指向リファクタリング 読書メモ - mookjp.io リン…

Qtでcsvファイルに書き込む方法 [Qt]

Qt

QTextStreamを用いることで、csvファイルに保存することが可能です。 csvファイル保存の形式に合わせるため、データごとにカンマで区切ります。今回は、10個のデータごとに改行します。 今回使用するデータは、日本語文字列データを使用しました。 以下がコ…

Qt5で日本語文字列を扱おうとすると文字化けするので、その対処方法 [Qt]

Qt

文字列リテラルを QString へ変換する Qt5では文字列リテラルを QString へ変換するには主に以下のメソッドを使用可能。 QString::fromLatin1() Latin1(ISO-8859-1) として QString を作成 QString::fromLocal8Bit() 現在のロケールに合わせたコーデックを使…

ユーザー定義クラス(独自クラス)のリストをQDataStreamにセーブ・ロードする方法 [Qt]

Qt

作成環境について Qt Creator 4.3.1で、以下の設定で、プロジェクトを作成しております。以下の設定でクラス名、cppファイル名、hファイル名はすべてデフォルトを使用しています。 Qtウィジェットアプリケーション 基底クラスは、QMainWindows フォームを生…

QSettingsを用いて、画面のサイズをセーブ・ロードしよう [Qt]

Qt

作成環境について Qt Creator 4.3.1で、以下の設定で、プロジェクトを作成しております。以下の設定でクラス名、cppファイル名、hファイル名はすべてデフォルトを使用しています。 Qtウィジェットアプリケーション 基底クラスは、QMainWindows フォームを生…

QSettingsクラスに、ユーザー定義クラス(独自クラス)の情報を格納する・読み出す方法について [Qt]

Qt

作成環境について Qt Creator 4.3.1で、以下の設定で、プロジェクトを作成しております。以下の設定でクラス名、cppファイル名、hファイル名はすべてデフォルトを使用しています。 Qtウィジェットアプリケーション 基底クラスは、QMainWindows フォームを生…

Qtで、ユーザー定義クラスのデータを保存する・読み出す方法 (Qt Designer使用)

Qt

作成環境について Qt Creator 4.3.1で、以下の設定で、プロジェクトを作成しております。以下の設定でクラス名、cppファイル名、hファイル名はすべてデフォルトを使用しています。 Qtウィジェットアプリケーション 基底クラスは、QMainWindows フォームを生…

Qtで、ユーザー定義クラスのデータを保存する方法

Qt

作成環境について Qt Creator 4.3.1で、以下の設定で、プロジェクトを作成しております。以下の設定でクラス名、cppファイル名、hファイル名はすべてデフォルトを使用しています。 Qtウィジェットアプリケーション 基底クラスは、QMainWindows フォームを生…

QtのQCombBoxの使い方 [Qt]

Qt

作成環境について Qt Creator 4.3.1で、以下の設定で、プロジェクトを作成しております。以下の設定でクラス名、cppファイル名、hファイル名はすべてデフォルトを使用しています。 Qtウィジェットアプリケーション 基底クラスは、QMainWindows フォームを生…

Qtで、画像をLabelに埋め込む方法 [Qt]

Qt

作成環境について Qt Creator 4.3.1で、以下の設定で、プロジェクトを作成しております。以下の設定でクラス名、cppファイル名、hファイル名はすべてデフォルトを使用しています。 Qtウィジェットアプリケーション 基底クラスは、QMainWindows フォームを生…

Qt Creator ショートカット

Qt

以下の環境で、便利なショートカットを記載します。 Qt Creator 4.3.1 Qt 5.9.1 Windows 便利なショートカット 実行 ⇒ 実行させるときに使用します。ただし、qmakeも一緒にされるわけではないため、注意 Ctrl + R ソース/フォームの切り替え ⇒ Qt Designerを…

Qt5 Designer学習

Qt

youtubeのこの動画の説明が非常にわかりやすいです。 英語ですが、動画で丁寧に説明しており、以下が丁寧に説明されています。 以下の動画は、Qt5 Designerを使用した内容となっています。 UIの配置方法 編集モード(Edit Mode)とデザインモードの変更方法 ww…

品質を向上させるために、テストクラスを記載しよう [C++]

C++

このように記載すれば、製品のソースコードと、テストクラスのソースコードを分離できます。 #include "box.h" #include <climits> #include <cassert> #include <iostream> class Test { public: Test() { Run(); } static void Run() { // 正常ケース assert(Test(0,0,0,0)); // 異常ケ</iostream></cassert></climits>…

Qt Creator4.3 トラブルバスター

Qt

自分がQt Creator4.3を使用する際に直面した問題の対処方法について記録します。 エラー(LNK1158)が発生 <症状> fatal error LNK1158: cannot run ‘rc.exe’が発生する <解決策> C:\Program Files (x86)\Windows Kits\8.0\bin\x64 の rc.exe と rcdll.dll…

Qt SIGNALとSLOTについて

Qt

SIGNALの説明やSLOTの説明は、以下のサイトに記載してあります。 https://blog.qt.io/jp/2010/07/20/create-signals-and-slots-2/ connect 関数 connect(sender, SIGNAL(signal), receiver, SLOT(slot) ); sender : 信号が発生する部品のアドレスを渡す SIGN…

Qt5の学習

Qt

Qt学習方法について 現在は、Qt5での開発が主流になっています。 Qt5に関連する情報はまだ少ないです。 ドキュメントは現在ほどんど英語しかないため、英語のドキュメントを読むことは回避しにくいです。 以下、ドキュメント。 http://doc.qt.io/qt-5/ Qt Cr…

コードレビューで指摘していただいた箇所まとめ [C++]

C++

コードレビューで指摘していただいた箇所をまとめて記載したいと思います。 ポリモーフィズムのための基底クラスには、仮想デストラクタを宣言すること。なぜならデストラクタが virtual でない場合、親クラスの型のポインタを delete した際には親クラスの…

コードレビューの観点まとめ [C++]

C++

今回は、コードレビューの観点まとめについて、記載していきたいと思います。 <コードレビューでプラス事項> 誰がひきついでもわかりやすく、読みやすいコード 変数名や関数名が工夫されていてコメントが少なく読みやすいコード 変数のスコープが必要最低…