投稿

さくらエディタがダークモードに対応

イメージ
さくらエディタがダークモードに対応 設定はこの箇所 あぁ、エディタ部分のカラープロファイルは作らなければなりません

Delphi の TThread.CreateAnonymousThread で ReturnValue を取得する

スレッドの SetReturnValueで投入した値を、取得するには ReturnValue か WaitFor を使うが、無名メソッド TThread.CreateAnonymousThread の戻り値は TThread なため Protected で宣言された ReturnValue メンバへアクセスできない ※OnTerminate で WaitFor を呼び出すとスレッド終了を待ってしまうため、永久に応答しなくなるので注意 TThreadを継承したクラス(上記では TDummyThread)を介して、ReturnValue へアクセス可 type TDummyThraed = class(TThread); AThread := TThread.CreateAnonymousThread(... // : TDummyThraed(AThread).ReturnValue

2027年 日本の祝日 祝祭日データいろいろ形式(テキスト、json)

 参照元 https://www8.cao.go.jp/chosei/shukujitsu/gaiyou.html ※休日 → 振替休日 へ表記を変更しています 2027-01-01 2027-01-11 2027-02-11 2027-02-23 2027-03-21 2027-03-22 2027-04-29 2027-05-03 2027-05-04 2027-05-05 2027-07-19 2027-08-11 2027-09-20 2027-09-23 2027-10-11 2027-11-03 2027-11-23 20270101 20270111 20270211 20270223 20270321 20270322 20270429 20270503 20270504 20270505 20270719 20270811 20270920 20270923 20271011 20271103 20271123 2027-1-1 2027-1-11 2027-2-11 2027-2-23 2027-3-21 2027-3-22 2027-4-29 2027-5-3 2027-5-4 2027-5-5 2027-7-19 2027-8-11 2027-9-20 2027-9-23 2027-10-11 2027-11-3 2027-11-23 2027/1/1 2027/1/11 2027/2/11 2027/2/23 2027/3/21 2027/3/22 2027/4/29 2027/5/3 2027/5/4 2027/5/5 2027/7/19 2027/8/11 2027/9/20 2027/9/23 2027/10/11 2027/11/3 2027/11/23 2027/01/01 2027/01/11 2027/02/11 2027/02/23 2027/03/21 2027/03/22 2027/04/29 2027/05/03 2027/05/04 2027/05/05 2027/07/19 2027/08/11 2027/09/20 2027/09/23 2027/10/11 2027/11/03 2027/11/23 [ "2027-01-01", "2027-01-11", ...

Delphi の ImageCollection へ Unicode絵文字をカラーで追加

Delphi の VirtualImageList(TVirtualImageList) を利用して、絵文字をアイコンとして、ImageCollection(TImageCollection) へ Unicode絵文字をカラーで動的に追加したい 通常の Canvas で TextOut するとモノクロになるので、Direct2D を使うんだとか また、生成する画像サイズに収まるようにするため、フォントサイズを変化させながら収まるサイズを探しています で、出来た関数 ※投入後、VirtualImageList.AutoFill := False → True で反映されます VirtualImageList が高DPIへサイズ調整するので、利用サイズより大きめで作成しておきましょう uses Vcl.Graphics, Vcl.BaseImageCollection, Vcl.ImageCollection, System.ImageList, Vcl.ImgList, Vcl.VirtualImageList, Vcl.ComCtrls, Vcl.Direct2D, Winapi.D2D1 function AddImageCollectionItemFromEmoji(AImageCollection: TImageCollection; AEmoji: string; AWidth: Integer = 32; AHeight: Integer = 32; AItemName: string = ''; AMaxFontSize: Integer = 32): Integer; var Bitmap: TBitmap; CollectionItem: TImageCollectionItem; SourceItem: TImageCollectionSourceItem; D2DCanvas: TDirect2DCanvas; Size: Integer; begin Bitmap := TBitmap.Create; try Bitmap.SetSize(AWidth, AHeight); Bitmap.PixelFormat := pf32bi...

sqlite で DATETIME、BOOLEAN を使うべきかも

sqlite の型は、NULL, INTEGER, REAL, TEXT,  BLOB のみ でも、CREATE TABLE で DATETIME や BOOLEAN(BOOL) 型も受け付ける それぞれ DATETIME = TEXT BOOLEAN = INTEGER としてテーブルが作成されるわけですが、テーブル構造には元の型情報が残ります これらの型情報、DB接続するライブラリを用いた時に効いてきます 多くのDBライブラリは sqlite以外へも接続できるため、DB依存の型を吸収しようとします 特に sqliteのような型種類が少ないDBの場合、ライブラリによってテーブルの型情報をチェックして変換するものがあり、asDatetime みたいな変換を DATETIME 型で宣言しておけば、すんなり行ってくれたりするわけです

raspi-config からの ROM化は USB接続のストレージも含まれる

raspberry pi の microSDカードが定期的にブッ壊れるのでROM化を行った GUI無しのサーバ構成 microSD(起動やアプリ) USB-SSD(データ) USB-HDD(SSD定期バックアップ) USBストレージは /etc/fstab で自動マウント ROM化は簡単 raspi-config から $ sudo raspi-config Performance Options -> Overlay File System しかし、このROM化は、 ルート / 配下を全てリードオンリーとするため、/mnt/以下も対象 オイオイ、上記ROM化で Gemini も、後からマウントしたUSBストレージは対象外だから問題ないよ! とか言ってたのに、症状を伝えたらルート配下も対象とか言い出す始末 ひとまず、ROM化解除して、更新ファイル(数個だった)を書き足して復旧 バックアップ用のHDDも同様にマウントしてたから、バックアップごと揮発してました(爆 【解決編】 rasp-config でのROM化後 cmdline.txt の overlayroot=tmpfs へ :recurse=0 を追記 必要な場合バックアップを取る ROM化解除 → 再起動 # rasp-config で Performance Options -> Overlay File System からROM化 再起動せずに rasp-config を終了(重要) /boot/firmware/cmdline.txt を開いて overlayroot=tmpfs に続けて :recurse=0 を追記 overlayroot=tmpfs:recurse=0 ※上記 cmdline.txt が書き込み禁止の場合 # mount -o remount,rw /boot/firmware を行ってから編集 再起動

Delphi TreeView の MultiSelect でコードからノードを選択

Delphi TreeView で MultiSelect := True; にすると、Ctrl+Clickで複数選択可能 ノートの選択状態を取得 Node.Selected TreeView.Selections, TreeView.SelectionCount コードから選択状態を設定(NG) 対象のノートで Node.Selected := True TreeView.Select(node1, [ssCtrl]) これらを用いると、選択されたりされなかったり、 TreeView.Selected が残った状態になったりする コードから選択状態を設定(OK) TreeView の Select メソッドへ array of TTreeNode 型の配列をまとめて渡せばよいらしい // ex.1 TreeView.Select([node1, node2]) // ex.2 var Nodes: array of TTreeNode; SetLength(Nodes, 2); Nodes[0] := node1; Nodes[1] := node2; TreeView.Select(Nodes); // ex.3 uses System.Generics.Collections; var NodeList: TList<TTreeNode> NodeList := TList<TTreeNode>.Create; NodeList.Add(node1); NodeList.Add(node2); TreeView.Select(NodeList.ToArray); NodeList.Free;