2017年1月15日 星期日

string to hex/int to hex

[BCB] string to hex(int)
int iHex = StrToInt("$" + AnsiString);

[VC++] int to hex(string)
String sHex = iNum.ToString("X2");

2017年1月11日 星期三

[C++] char array 與字串比對

strcmp()

Example.
strcmp(char array, "word")
return 0, means equal, otherwise is not match.

notice: 若 char array 資料來自某段複製
記得自行加上 '\0' 結尾, 否則不會 match

2017年1月10日 星期二

[C++] System::String^ to char*

System::String^ to char*


Reference: http://forums.codeguru.com/showthread.php?372298-MC-amp-C-CLI-String-How-to-convert-System-String-to-char*

Example Code.
using namespace System::Runtime::InteropServices;

char* cFileName = (char*)(void*)Marshal::StringToHGlobalAnsi(textBox1->Text);

[C++] wchar(tchar) 與 char 互轉

wchar(tchar) 與 char 互轉

1. char --> wchar(tchar)
char* szWord = "Hello";
wchar_t szWchar[10];
mbstowcsszWchar, szWord, strlen(szWord));

2. wcahr(tchar) --> char
char szWord[10];
wchar_t szWchar[] = L"Hello";
wcstombs(szWord, szWchar, wcslen(szWchar));

2017年1月9日 星期一

[C++] 取得當前路徑

1. .\\ 可以取得當前應用程式的目錄, 但當前的目錄位置不一定等於應用程式的目錄位置, 應用程式的當前目錄可被修改

2. GetCurrentDirectory() 同 .\\

3. GetModuleFileName()
    函数原型
    DWORD GetModuleFileName(
        HMODULE hModule,    // 若要當前目錄, 填 NULL
        LPTSTR lpFilename,      // 得到的文件名
        DWORD nSize                // 可容許的長度
    );

    Example.
    wchar_t szFilePath[256];
    GetModuleFileName(NULL, szFilePath, 256);
    String ^ A = gcnew String(szFilePath);
    int pos = A->LastIndexOf("\\");
    this->openBinFileDialog->InitialDirectory = A->Substring(0, pos);

2017年1月3日 星期二

[C++] 宣告未知大小的陣列

Reference: http://phorum.study-area.org/index.php?topic=48457.0

使用指標

Example.
int *pt;

要使用時再動態配置記憶體
pt = new int[count];

用完後歸還記憶體
delete []pt;



** 計算陣列大小
int array[] = {1, 2, 3};
int result = sizeof(array)/sizeof(int)

[C++] 組態錯誤

使用 sxstrace 來檢查問題. 使用方法如下:

sxstrace trace -logfile:filename
產生追蹤的 log file

sxstrace parse -logfile:filename -outfile:filename
剖析 log file 並產生輸出檔


若是找不到 DebugCRT 等資料, 可至
32bit os: C:\Program Files\Microsoft Visual Studio 8\VC\redist\Debug_NonRedist\x86
64bit os: C:\Program Files (x86)\Microsoft Visual Studio 8\VC\redist\Debug_NonRedist\x86