Input
字串:String^ line = Console::ReadLine();
字元:char ch = Console::Read();
數字:int value = Int32::Parse(Console::ReadLine());
鍵盤:ConsoleKeyInfo keyPress = Console::ReadKey(true); // true 即 No Display, flase 即 Display
Ouput
int packageCount = 1;
float packageWeight = 7.5;
Console::WriteLine(L"Packages:{0,3} Weight: {1,5:F2} pounds.", packageCount, packageWeight);
{n,w : Axx}: n - arg, w - field width, A - formatted, xx - precision
2010年1月9日 星期六
2010年1月7日 星期四
[C++/CLI] Visual C++ 2008 /MT 和 /CLR 的命令列選項不相容
[ 如果使用支援 /clr ]
[ 執行階段應選 /MD ]
[ 如果選擇 /MT 會有不相容的錯誤訊息產生 ]
以下取自微軟的 msdn :
/MD
會讓您的應用程式使用多執行緒及 DLL 專屬版本的執行階段程式庫。也會定義 _MT 和 _DLL,讓編譯器將程式庫名稱 MSVCRT.lib 置入 .obj 檔案中。 以這個選項編譯的應用程式會以靜態方式連結到 MSVCRT.lib。這個程式庫會提供一層可以讓連結器解析外部參考的程式碼。實際的工作程式碼是包含在 MSVCRT.dll 中,它在執行階段時必須能提供給與 MSVCRT.lib 連結的應用程式使用。當 /MD 配合所定義 _STATIC_CPPLIB (/D_STATIC_CPPLIB) 使用時,它會讓應用程式與靜態的多執行緒 Standard C++ 程式庫 (libcpmt.lib) 連結,而不與動態版本 (msvcprt.lib) 連結,同時仍透過 msvcrt.lib 動態地連結至主要的 CRT。
/MT
會讓您的應用程式使用多執行緒靜態版本的執行階段程式庫。會定義 _MT,並讓編譯器將程式庫名稱 LIBCMT.lib 置入 .obj 檔案中,讓連結器能夠使用 LIBCMT.lib 解析外部符號。
2009年12月20日 星期日
2009年11月26日 星期四
[C/C++] 讓 Visual C++ 2008 的程式在別的電腦上執行
除了在要執行的電腦上安裝相對應的 .Net Framework,編譯的組態也要選擇成 Release,再到 專案 -> 選項 -> 組態屬性 -> 一般 -> MFC 的使用 -> 使用 MFC 的靜態程式庫
2009年11月20日 星期五
[Robot] Roboard 和 Webcam
在實驗室裡用了不同的 Webcam 測試,
發現不同的 Webcam 在 Roboard 上效能也有差。
用 OpenCV 對 20 張 frame(320x240) 作擷取紅色部分,結果 :
QuickCam Communicate Deluxe 4.0s
QuickCam Pro 5000 ?s
QuickCam Pro 4000 5.6s
Altar 8.4s (640x480)
QuickCam Communicate STX 12.4s
QuickCam Easy/Cool ?s
QuickCam Orbit/Sphere ?s
而且用 Logitech QuickCam 的程式還抓不到影像,( 跟不支援 MMX 好像有關係 )
用 Windows API 的就可以。
用 OpenCV 對 20 張 frame(320x240) 作擷取紅色部分,結果 :
QuickCam Communicate Deluxe 4.0s
QuickCam Pro 5000 ?s
QuickCam Pro 4000 5.6s
Altar 8.4s (640x480)
QuickCam Communicate STX 12.4s
QuickCam Easy/Cool ?s
QuickCam Orbit/Sphere ?s
而且用 Logitech QuickCam 的程式還抓不到影像,( 跟不支援 MMX 好像有關係 )
用 Windows API 的就可以。
2009年11月17日 星期二
為了在 Roboard 上灌 XP,搞了很久,
我把 Windows XP + Roboard 的 IDE 包成一個映像檔 WinLite.iso,
然後在用 usb_prep8 把 WinLite.iso 掛到 SD 卡上,
結果出現了一堆 FIND: Windows NT: No such file or directory
我把 Windows XP + Roboard 的 IDE 包成一個映像檔 WinLite.iso,
然後在用 usb_prep8 把 WinLite.iso 掛到 SD 卡上,
結果出現了一堆 FIND: Windows NT: No such file or directory
[ 錯誤訊息 ]
以為是 SD 不能用換了 USB,還是不行,在從 8G 換到 4G,都不行。
結果在西班牙的論壇上看到解決的方法 ( 有 google 翻譯真好 )
居然是因為 WinAVR !
C:\WinAVR-20080610\utils\bin\find.exe
把那個 find.exe 改成 find.exe.bak 就行了。
2009年11月2日 星期一
[BCB] TImage 和 TBitmap
在 BCB 裡,讀取 TImage 的像素和 TBitmap 的像素時間是差不多的,
但是寫入的時間卻是差很多,我用四種方法對同一個位置寫了 100000 次,
// 執行時間: 0.125s
for (int i = 0; i < 100000; i++)
TheBitmap->Canvas->Pixels[0][0] = TColor(RGB(0, 0, 0));
// 執行時間: 0.125s
for (int i = 0; i < 100000; i++)
TheBitmap->Canvas->Pixels[0][0] = clBlack;
// 執行時間: 0.969s
for (int i = 0; i < 100000; i++)
Image1->Canvas->Pixels[0][0] = TColor(RGB(0, 0, 0));
// 執行時間: 0.969s
for (int i = 0; i < 100000; i++)
Image1->Picture->Bitmap->Canvas->Pixels[0][0] = TColor(RGB(0, 0, 0));
結果發現,TBitmap 的寫入時間較快,此外搭配 ScanLine[] 和指標會比直接設
Pixels 快上 50 倍以上,所以要畫圖最好用間接的方式 :
Pixels 快上 50 倍以上,所以要畫圖最好用間接的方式 :
Graphics::TBitmap *TheBitmap;
TheBitmap = new Graphics::TBitmap();
TheBitmap->Height = h;
TheBitmap->Width = w;
對 TBitmap 寫值...
Image1->Picture->Bitmap = TheBitmap;
這樣會有較好的執行效率,也可以避免畫面閃爍。
訂閱:
文章 (Atom)



