鳥の巣箱

ネトゲしたり、機械いじったり、ソフト書いたり、山篭ったり、ギャンブルしたりする人

Programing

Bitmapでピクセルに対して操作しようとしたら。。。

FireMonkeyのTBitmapクラスには、VCLで存在していたScanlineがない。 これだと1ピクセルずつ描画していくような処理をする場合に結構困る。で、どうするかというと

複数のコンポーネントを配列化して処理する~イベント編~

birdhouse.hateblo.jp以前、Delphiで複数のコンポーネントを配列にまとめて、一括処理する方法について書きましたが 今回はそのコンポーネントイベントも一括で書いてしまおうという内容です。

Variant型について

DelphiにはVariantという型が存在します。 これは非常に便利な型です。 コンパイル時に、型を一意に決定できないデータの操作が必要な場合に使えて、実行時に型を変更できます。

手続き、関数のパラメータについて

Delphiではprocedure(手続き)とfunction(関数)があります。 これらルーチンにはパラメータをもたせることができます。 例えば function plus_one(val:Integer):Integer; begin Result := val +1; end; こんな関数ですが、ここでのパラメータはInteger型のval…

正規表現が適切か調べる

Delphiで正規表現を扱う時に使うであろうTRegExクラス。 非常に便利ではあるんですが、正規表現に適切でない文字列を引数として渡すと当然ですが例外が発生します。 例外を発生させたくない場合、TRegExクラスメソッドの引数として与える前にこの文字列が適…

Delphiで複数のコンポーネントに対する操作をforループなどで処理する

Delphiで複数のコンポーネントに対して、同じような処理をする場合 for文などを使って一気に処理したい、記述したいという場面は結構あると思います。ここでは私がよく使う方法を書いておきます。

C言語でオブジェクト指向"風"のリングバッファと移動平均の計算

STMicroを使った仕事をしていて、なんとなく書いてみたくなったのでやってみた。基本的には構造体を駆使すれば、オブジェクト指向風な書き方はできるみたい。 ただ、あくまでもオブジェクト指向”風”なんでね。

UTF-8を使って作成したCSVをExcelで開くと文字化けする問題

UTF-8を使って書き出したCSVファイルをExcelで開くと文字化けしてしまいました。この問題について解説します。

Raspberry Pi+OpenCVでのUSBカメラフレーム取得速度を向上したい

Raspberry PiにOpenCVを導入し、USBカメラを動かしたいわけですが この辺の手法は、他でも散々紹介されたおしてるのでこの記事では書きません。 OpenCVの導入もスルーします。すでにOpenCVも入ってるし、USBカメラから画像の取り込みくらいはできたよ! って…

Pythonで一定間隔で処理をさせる

pythonで、例えばある関数を1秒間隔で実行したい時、初心者が一番最初に思いつく方法として def task(): # 何らかの処理 def main(): while True: task() time.sleep(1) といった書き方がある。この書き方でも”およそ1秒毎”には処理してくれる。 だが、tas…

最小二乗法の考え方と導出~2次関数編~

birdhouse.hateblo.jpこれの続きです。 前回は直線に関して導出しましたが、2次関数の場合を考えてみます。

最小二乗法の考え方と導出

データ配列としてというデータがあったとして、 これらのデータを1次関数の式という形で表現したいとしたときの傾きと切片はどう求めればいいのだろうか。

プログラムで指数が小数のべき乗を計算するときの話

プログラム乗でべき乗の計算をすることは多々あると思います。 整数のべき乗は簡単です。 では、小数のべき乗はどう考えるべきでしょうか?例えばみたいなやつです。使用する言語によっては、これをサポートする関数が用意されてたりします。DelphiとかはPow…

TListViewをResizeしたときのItem Objectの操作

TListViewを使っていてハマった問題。TListViewのサイズが変わると、リスト内のオブジェクト(ButtonやImageなど)のサイズが勝手に変わってしまっていた。

Pythonで終了処理を実行させる

一つの問題です。 よくあるRaspberry PiのGPIOを制御するプログラムです。 以下のようなソースコードがあって import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BOARD) GPIO.setup(13, GPIO.OUT) while True: GPIO.output(13, True) time.sleep(1) GP…

EurekaLogでスレッドの例外を受け取る

EurekaLogで別スレッドで発生した例外を受け取る方法としては、公式Documentにいろいろと書いてあります。EurekaLog 7 Documentation

平均の計算をループを使わずに処理時間を短縮する

タイトル通りです。 簡単に平均値の計算をする場合、大体はこんな感じの関数を使うことになるでしょう。 function Average(data : array of Double):Double; var I : Integer; begin Result := 0; for I := 0 to Length(data) -1 do begin Result := Result …

自作クラス作成Tips ー 自作クラスにレコード型のプロパティを持たせる時の注意

自作クラスにレコードプロパティを実装したいという場面は結構あるはずです。 ただ、実装時にはいくつか注意しなければならないことがあります。

MfPackのバグ

DelphiでWASAPIを扱うためのライブラリとしてMfPackが公開されてますが、 これにバグがあるようで、全く動かない。

ビット反転アルゴリズム

数年前にFFTライブラリのためにビット反転処理を書いた。 ただ、FFTサンプル数を増やしたときに崩壊してしまっていたので、サンプル数に制限をかけてたわけですが 一思いにこの辺の処理を一新することにした。

SecureBridgeを使って、SSHログインとシェルを動かした。。。けど謎。

Delphi向けの有料コンポーネントのSecureBridgeを使って、SSHログインとシェルコマンドを実行させる手順をまとめときます。開発元が公開しているマニュアルがあまりにも読みづらかったので、試行錯誤しながらなんとか動いた感じなので間違いは多々ある気もす…

MoveTo、LineToメソッドで描いた線とPen.Widthの特性。。。とScanLineについて。

TBitmapコンポーネントなどには、そのBitmap上に線を引くために ・MoveTo(x,y) ・LineTo(x,y) というメソッドが用意されてます。MoveTo(x,y)で線の始点になる座標を指定し、LineTo(x,y)で指定した座標まで直線を描きます。また、Pen.Widthプロパティで線の太…

HDD容量の取得とLARGE_INTEGERの扱い

HDD容量を取得する場合は、Windows APIにあるGetDiskFreeSpace関数を使うと各変数に色々値をぴったんこしてくれるわけですが僕、最初普通にこの「GetDiskFreeSpace関数」の方を使ってたんですね。そしたら正しい値が返ってこないというわけで。https://msdn.…

Delphiで処理速度を計測する

今作ってるプログラムで、ちょっとレスポンスが悪いプロシージャがあったので プロシージャ内部のどの処理が時間を食ってるのか調べることにした。何パターンかやり方があるけど、とりあえず簡単なのを。 timeGetTime関数 uses MMSystem; procedure TimeChec…

RIFFフォーマットファイルの読み込み

DelphiでWaveファイルを扱うためにRIFFフォーマットのファイルを読み込む必要がでてきたんで色々とメモ書き。 まず必要なものの説明。 MMSystemライブラリ マルチメディア関連のAPIが各種はいっている。 uses句にこれを追加する必要あり。 MMRESULT型 MMSyst…

TImageのリサイズ時に気をつけること

Delphiやりはじめて初日ですどうも。早速躓きまくってるので色々メモ書きをガンガン残していきます。 DelphiでTImageコンポーネントを、フォームのサイズに合わせてリサイズしようとしていたのだが、どうにもうまくリサイズされない。通常のコンポーネントは…

DelphiのエディターをMonokai風にアレンジ

仕事の都合上、Delphiデビューすることになりました。エディターが初期設定だとかなり見づらいので、カラーチェンジの設定をメモ書き程度に書いていきます。SublimeTextの方でカラースキーマはMonokaiを使ってるので、感覚的にはこれに近づけていく感じでい…

KPIT GNU H8ツールチェイン 割り込み操作のなんたらかんたら

H8マイコンで割り込み操作を実行するためにあれこれ試行錯誤していたもののなぜか割り込みが入らない。 ネットで色々調べてみるもツールチェインがGCCだったりでKPITを使った情報が極端に少ない。てか見つからねぇ。 とりあえず動かすための手順だけ殴り書き…

UTF-8からShift_JISへのエンコードエラー

なんかめんどくさいことにぶち当たったので覚書程度にまとめとく。 マイコン関係の開発環境として普段HEWとSublime Text 2を併用して使ってるんですが、HEWでUTF-8が使えないんですねぇー。 Sublime Text側で編集すると、HEWではコメントアウトした日本語部…