CFileを使ったファイルの一発読み書き

読み

	CFile	f;
	CString writeData="";

	if ( f.Open("test.txt",CFile::modeRead)	==	TRUE)
	{
		unsigned int	flen = (unsigned int)f.GetLength();
		unsigned char *data = (unsigned char *)malloc(flen+1);
		if ( data	!= NULL )
		{
			f.Read(data,flen);
			data[flen]	=	0;
			writeData =	data; 
			free(data);
			f.Close();
		}
	}

書き

	CFile	f;
	CString writeData="abcdefg";
	if ( f.Open("test.txt",CFile::modeCreate | CFile::modeWrite)	==	TRUE)
	{
		f.Write(writeData.GetBuffer(),writeData.GetLength());
		f.Close();
	}

ネタ元

blog.goo.ne.jp

vectorの要素削除

// 0 〜 4が入ったvector型変数numbersを用意
std::vector<int> numbers {0, 1, 2, 3, 4};
    
// aとbを除きたい
int a = 1;
int b = 3;

// iteratorで内部要素を回し、該当値であればその要素を削除
for (auto itr = numbers.begin(); itr != numbers.end(); itr++)
{
    if (((*itr) == a) || ((*itr) == b))
    {
        numbers.erase(itr);
  break; 
    }
}

ネタ元

blog.dalt.me

SQLite には、データを一括挿入するための特別な方法はありません

SQLite には、データを一括挿入するための特別な方法はありません。 データの挿入または更新時に最適なパフォーマンスを得るには、以下を行ってください。

トランザクションの使用。
同じパラメーター化コマンドの再利用。 後続の実行で、最初の実行のコンパイルを再利用します。

ネタ元

docs.microsoft.com

ExcelVBA ThisWorkbook.RefleshAllで更新待ちしてくれない対策

サンプル。指定シートの更新を行ってから待つ

クラス CQtEvents

Option Explicit

Private WithEvents mQryTble As QueryTable
Private mRefreshed As Boolean
Private mCallback As String

Public Property Set QryTble(ByVal QryTable As QueryTable): Set mQryTble = QryTable: End Property
Public Property Get QryTble() As QueryTable: Set QryTble = mQryTble: End Property

Public Property Let Refreshed(ByVal paramRefreshed As Boolean): mRefreshed = paramRefreshed: End Property
Public Property Get Refreshed() As Boolean: Refreshed = mRefreshed: End Property

Public Property Let Callback(ByVal SpecifiedProcName): mCallback = SpecifiedProcName: End Property

Private Sub Class_Initialize()
    mRefreshed = False
End Sub

Private Sub mQryTble_BeforeRefresh(Cancel As Boolean)
    mRefreshed = False
    Debug.Print "*** mQryTble_BeforeRefresh(): Refreshed=" & Refreshed
End Sub

Private Sub mQryTble_AfterRefresh(ByVal Success As Boolean)
    mRefreshed = True
    Debug.Print "*** mQryTble_AfterRefresh(): Refreshed=" & Refreshed, "Success=" & Success
    If mCallback <> "" Then Application.Run mCallback, Success
End Sub

メインコード

    Dim TargetTable As ListObject: Set TargetTable = Sheets("hogehoge").ListObjects(1)
    TargetTable.DataBodyRange.Rows.Delete ' いったんテーブルのデータを全てクリア
    
    Dim TargetQueryTable As QueryTable: Set TargetQueryTable = TargetTable.QueryTable
    Dim classQtEvents As CQtEvents: Set classQtEvents = New CQtEvents
    Set classQtEvents.QryTble = TargetQueryTable
    
    Dim BeforeTime: BeforeTime = Timer
    Debug.Print "[Before] TargetQueryTable.Refreshing:" & TargetQueryTable.Refreshing, "Rows.Count: " & TargetTable.Range.Rows.Count
    
    classQtEvents.QryTble.Refresh BackgroundQuery:=False ' クエリ更新を待つ
    
    'Debug.Print "[After]  TargetQueryTable.Refreshing:" & TargetQueryTable.Refreshing, "Rows.Count: " & TargetTable.Range.Rows.Count
    'Debug.Print "[Completed] " & Format(Timer - BeforeTime, "00:00:00.000")

ネタ元

gist.github.com