プログラミング
FindFirstFileW による Unicode対応してみた 以前の記事で、FindFirstFile を使って、ファイルリストを取得するコードを書いたが、Unicode文字が含まれると文字化けするため修正してみた。 処理としては、ざっくりいうと、FindFirstFileA、FindNextFileA を…
ネットを見ていると、SafeArrayGetDim のVBA での宣言は、以下のように書かれているのを見かける。 Private Declare PtrSafe Function SafeArrayGetDim Lib "oleaut32" (ByRef psa() As Any) As Long しかし、MSのサイトの C++ 表記では、以下のようになって…
きっかけ 完成イメージ 環境 技術情報 メッセージ WM_INITDIALOG WM_DRAWITEM WM_COMMAND 構造体 ソース おまけ 前置きが長いので、ソースが欲しい方は、リンクで前置きをスキップして下さいw きっかけ 趣味のような感じで、VBAのコードを書いているのですが…
ダウンロードしたファイルの検証や、ファイルの改竄がないかの検証などに MD5や、SHA-256などによるハッシュ値が使われる事があります。例えば、下の図は、CrystalDiskInfoのダウンロードサイト に記載されているハッシュ値部分をキャプチャしたものです。 …
トライ木とは コード トライ木 InStr 結果 テストデータ 結果 トライ木とは 人に説明できるだけ理解していないので、Wikipediaより抜粋。 順序付き木の一種。あるノードの配下の全ノードは、自身に対応する文字列に共通するプレフィックス(接頭部)があり、…
スタートメニューを辿っていくのが面倒だったので、 実行ファイルを作って、デスクトップにショートカットを作ることにしました。環境 Windows 10 Home 64bit Visual Studio Community 2019 #include <Windows.h> #include <iostream> using namespace std; BOOL EnablePrivileges</iostream></windows.h>…
前置き コード 実行結果 参考 前置き C++で、FindFirstFileEx を使って、ファイルを取得。 エクスプローラー風に、数字が綺麗に昇順になるようにソートする。 サブフォルダは、除外。 コード #include <iostream> #include <vector> #include <algorithm> #include <string> #include <Windows.h> #include <shlwapi.h> /</shlwapi.h></windows.h></string></algorithm></vector></iostream>…
Twitter のお題、 280バイトを超えない範囲で区切りのよいところで分割したい を解いてみました。お題は、こちら【エクセルお題】ツイートの下書きをA1セルに入れています。バイト数はLENB関数で分かりますが、単純に280バイトで区切ってしまうと文章が尻切…
n個の要素から、r個を抜き出す組み合わせ数を求めてみた。とりあえず、コードだけ。 解説は、時間とその気が出来たら、後日wwwn = 99 なら、全ての r の組み合わせを出力できる。 n = 100 なら、47 コード Public Function nCr(ByVal n As Long, ByVal r As …
ゴールデンウィークに行われた、Twitter のお題 「魚の数を数えろ!」 「魚の数を数えろ! 蟹バージョン」 を今更ながら、C++で正規表現を使って解いてみた。物足りない人向けに、ちょっと難易度を上げたアレンジ問題を。タラバガニ毛ガニタラバガニ毛ガニ越…
はじめに 処理の概要 使用するAPI FindWindow GetWindowLongPtr SetWindowLongPtrA SetLayeredWindowAttributes 拡張ウィンドウスタイル コード 事前準備 標準モジュール 実行サンプル はじめに Windows では、Windows 2000 Professional 以降のバージョンで…
Twitter で、ほえほえ氏から提示されたお題「ねこちゃんの数を数える」を解いてみた。少しお題を考えたので投稿してみます。お題のためのお題ということで少し不自然だし、簡単な解法があるかもしれませんがご容赦を。発展型で言ってみます。お題 ねこちゃん…
Twitter でのお題 「y = 5x^3 + 2x^2 + 7x + 5」の導関数を求めろ! を解いてみた。正規表現を使って、必要なデータを取り出して、ゴニョゴニョしました。使用したパターンは、以下の通り。 "([+-]?)(\d*)x(\^([+-]?\d+))?"大雑把な説明 x に対して、 [+-]? …
初めに キーワード アタッチ デタッチ 実際にやってみる 操作の流れ アタッチ ブレークポイント ステップイン ステップオーバー ステップアウト 続行 デバッグの停止 全てデタッチ プロセスに再アタッチ ウォッチ 自動変数 ローカル メモリ 主なショートカッ…
初めに 事前準備 アライメント #pragma pac による要素の配置への影響の確認 pacあり、ダミーメンバーなし pacなし、ダミーメンバーなし pacなし、ダミーメンバーあり pacなし、ダミーメンバーあり2 メモ コード DLL AccessibleFromVBA.h AccessibleFromVBA…
初めに 処理 コード DLL AccessibleFromVBA.h AccessibleFromVBA.cpp AccessibleFromVBA.def VBA 実行結果 DllTestSetArrayV DllTestGetArrayV まとめ 過去掲載分 初めに 前回の予告通り、今回は非配列のVariant型変数に配列を格納して、DLLとの受け渡しをし…
初めに SAFEARRAYに関する追加情報 配列要素のデータ型 引数 主な処理と使用する関数 HRESULTを返す関数の成否判定 SAFEARRAYに格納されている要素のデータ型分類値の取得 配列の次元数の取得 配列の1要素のサイズの取得 指定した次元のインデックスの指定…
初めに BSTR 構造 メモリ管理 ポインタを介してのデータの書き換え 内部のデータ文字列の状態 ヘッダ 関数 SysAllocStringByteLen SysAllocString SysAllocStringLen SysFreeString SysStringLen SysStringByteLen SysAllocStringとSysAllocStringByteLenの…
SafeArrayRedim を使うと、 非配列のVariant型変数に格納した配列でも、LBoundとかElementsとかの変更ができる。だまって、 ReDim Preserve v(2 To 4) とかすればいいんだけど・・・ ソース Private Type SAFEARRAYBOUND cElements As Long lLbound As Long …
はじめに SAFEARRAY SAFEARRAY構造体 cDims fFeatures cbElements pvData rgsabound 次回予告 過去掲載分 はじめに 前回の文字列の受け渡しでは、VARIANTを使いました。(自分でもびっくり)今回の配列でも、int* とか short* とかを使うのかと思いきや SAFE…
前回のコードでは、完敗だったADODB.Stream ですが、汚名返上なるか? 見つけたサイトに掲載された方法による効果を検証してみます。 前回 z1000s.hatenablog.com 目次 前回の結果概要 処理時間 不明な点 ADODB.Stream を使った処理の分析と改善 参考サイト…
初めに データ 処理概要 ADODB.Recordset ADODB.Stream コード 事前準備 共通部分 ADODB.Recordset Scema.ini ADODB.Stream(1行ずつ読み込み) 結果 要素分割が正しく行われていなかった・・・ まとめ それぞれの方法の比較 次回予告 初めに 以前、ADODB.R…
その1、その2と書いたものの 1年以上放置して、いまさらの第3段。今回は、文字列の受け渡しです。 初めに 文字列を受け渡しするためのデータ型 VARIANT型 vt bstrVal pbstrVal 関数 DLL側でのVARIANT内部形式の判断 VARIANTの文字列の変換 VARIANT→BSTR …
昨日、Twitter で、 「16進数のORをとるのにもっと効率のいいやり方ある?」 というやつを見つけました。16進数のORをとるのにもっと効率のいいやり方ある?誰かおせーて!#VBA pic.twitter.com/qmQrwBiWti— ささきさん (@sasaki__san) 2019年9月16日スマホ…
Excelでフィルタの適用状態に関わらず、任意のセルの(見た目上の)ひとつ上のセルの値を取得しようというもの。元ネタはこちら koroko.hatenablog.com 別の方法で、こちらでも。 infoment.hatenablog.com両者とは別のアプローチで・・・目次 抑えておくべき…
初めに Union メソッド 機能 構文 パラメータ 戻り値 使用例 Areas.Count と Areas.Item(N) 実際に返ってくる値 Areas.Item(N) Areas.Count 複数の Range がひとつの Areas.Item( N ) に纏められるケース(具体例) 隣接する2個以上の Range が矩形となる場…
主に偶数判定のための私的メモ。 判定式結果 偶数の場合奇数の場合 偶数判定( N Eqv 0 ) And 101 ( N And 1 ) = 0TrueFalse 奇数判定N And 101 ( N And 1 ) = 1TrueFalse Eqv(XOr の逆パターン) 値1 値2 値1 Eqv 値2 False False True False True Fals…
下記のサイトで、同じデータのセルを結合するということで、Unionを使ってRangeをまとめて最後にMergeという処理を行っていました。kouten0430.hatenablog.comこれはこれで良いのですが、非連続データならともかく、連続データである場合には、 個人的には、…
コロ子さん(id:SNegishi)のところで、自動採番処理をやっているのを見て、ちょっと気がついた点をコメントしました。 すぐに修正版がアップされて「おぉ~、仕事はえぇなぁ」と感心していました。 koroko.hatenablog.com そんな中で、 「Worksheet_Selecti…
条件 求める式 補足 コード 実行例 テストコード 実行結果 条件 任意の3つの整数において、以下の条件を満たす事(負の値があっても可) 最小値 範囲の最大値をインクリメントした場合、範囲の最小値を返す事。 範囲の最小値をデクリメントした場合、範囲の…