投稿

Delphi のフォーマッタで無関係な変数の大文字小文字が揃えられてしまう

イメージ
 Delphi のフォーマッタで無関係な変数の大文字小文字が揃えられてしまう デフォルトで下記のようになっている 「その他の単語の大文字・小文字表記」= 最初の出現どおり 下記のようなコードの場合 interface uses System.Hash; type TFoo = class(TObject) private FHash: string; public property hash: string read FHash; end; TFooRec = record hash: string; end; フォーマッタを実行すると System.Hash を最初の出現とみなしてしまい interface uses System.Hash; type TFoo = class(TObject) private FHash: string; public property Hash: string read FHash; end; TFooRec = record Hash: string; end; となってしまう 言語的に問題ないように見えますが、RTTIを使用している場合、大文字小文字が変更されて設計と違う結果になってしまうことがあります(TJsonSerializer を利用して、問題に遭遇しました) フォーマッタの設定を変更すれば回避できますが、デフォルト設定がそれであるため、別環境を構築してフォーマッタを実行しただけで、書き換えられてしまうという問題を抱えたままとなります。コンパイルで問題を発見できない事も問題です。 フォーマッタの例外オプションを探しましたが見つからないため、該当部分を別ファイルへ抜き出して uses で参照することとしました

Delphi - TreeView で特定Nodeの文字色を変更

TreeView の CustomDrawItem を用いて procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView; Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean); begin if (Node.Text = 'TargetNode') then begin Sender.Canvas.Font.Color := clRed; end; end; カスタムスタイルを使用している場合、背景が白抜け(スタイル未適用で塗りつぶされてしまうため) Vcl.Themes を uses して、TreeView(scTreeView)の色を取得してブラシへ割り当ててやる uses Vcl.Themes; procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView; Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean); begin if (Node.Text = 'TargetNode') then begin Sender.Canvas.Brush.Color := TStyleManager.ActiveStyle.GetStyleColor(TStyleColor.scTreeView); Sender.Canvas.Font.Color := clRed; end; end;

SumatraPDF v3.5.2 でホームタブを表示させない

イメージ
 SumatraPDF v3.5.2 でホームタブが常に表示されるようになったようなので、設定を変更して非表示に 詳細設定から SumatraPDF-settings.txt を開き NoHomeTab の値を true へ変更して保存

Evernote API findNotesMetadata で取得する totalNotes が正しくない

 Evernote API findNotesMetadata で取得する totalNotes が以下の条件で正しい値を返さない 条件 NoteFilter.words が指定されている(空ではない) NoteFilter.notebookGuid の指定なし linkedNotebook(非共有ノートブック)が存在するアカウント linkedNotebook に検索に該当するノートが含まれている この条件で NoteStore.findNotesMetadata を呼び出した場合 戻り値 NotesMetadataList の totalNotes は linkedNotebook 内の該当ノート数を含む値が返るが NotesMetadataList.notes には linkedNotebook に存在するノートは含まれない また、offset, maxNotes を使用した検索結果は、linkedNotebook 内の該当ノートを含む(実際には取得できない)挙動をするため note1 note2 note3(linked) note4 note5(linked) note6 1. offset=0, maxNotes=3 で findNotesMetadata note1 note2 notes.count=2, totalNotes=5 2. offset=3, maxNotes=3 で findNotesMetadata  note4 note6 notes.count=1, totalNotes=5 2回目の offset に 1回目の結果 notes.count=2 を用いて決定してしまうと 同じノートを複数取得したり、取りこぼす可能性がある 対応 totalNotes を2回目以降の findNotesMetadata 実行条件としない 2回目以降の offset は notes.count ではなく、前回の maxNotes を用いる 結果が notes.count = 0 の条件でループを抜ける どなたか findNotesMetadata で linkedNotebook 内のノートも取得する方法知ってたら、教えて下さい!!

alexa_remote_control.sh 認証方法のメモ

イメージ
 Alexa(Amazon Echo)のリモコン alexa_remote_control.sh の認証方法がID+パスワードからリフレッシュトークンへ変更されているようなのでメモ alexa_remote_control.sh 内の SET_EMAIL='' SET_PASSWORD='' に代わって SET_REFRESH_TOKEN='' を取得を設定する必要がある 下記から該当プラットフォームのバイナリをダウンロード、実行 ※ブラウザによりAmazonへログイン可能なプラットフォームの事です https://github.com/adn77/alexa-cookie-cli/releases (ログイン時の cookie からトークンを読み取るらしい) Windows の場合 alexa-cookie-cli-win-x64.exe を実行 http://127.0.0.1:8080/ をブラウザで開いて、対象のAlexa と同一アカウントでログイン ログインが成功すると情報がトラップされるので、refreshToken をalexa_remote_control.sh の SET_REFRESH_TOKEN へコピペ 参考文献 https://blog.loetzimmer.de/2021/09/alexa-remote-control-shell-script.html

Inno Setup でインストールフォルダが "Program Files" にならず "Program Files (x86)" となる

 Inno Setup で64bitアプリのインストール先が "Program Files" にならず "Program Files (x86)" となる [Setup] DefaultDirName= {autopf} \MyApp を [Setup] DefaultDirName= {commonpf} \MyApp としても変化なし [Setup] DefaultDirName={autopf}\MyApp ArchitecturesInstallIn64BitMode=x64 とすればよいらしい

Inno Setup のコンパイルで「プロセスはファイルにアクセスできません。別のプロセスが使用中です。」

イメージ
 Inno Setup6 のコンパイルで 「プロセスはファイルにアクセスできません。別のプロセスが使用中です。」 が表示されてセットアップファイルが作成できない [Setup] OutputDir= に記載されいる、出力先フォルダをウィルスチェックの対象外にする