Feeds:
文章
留言

Archive for 二月 22nd, 2008

.NET 的字串 Split 和 Join

PHP 有兩個相當好用的字串函數:explode 和 implode,主要用於 Array 和 String 之間的轉換,如下:

$pizza  = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);
echo $pieces[0]; // piece1
echo $pieces[1]; // piece2

$array = array(‘lastname’, ’email’, ‘phone’);
$comma_separated = implode(",", $array);
echo $comma_separated; // lastname,email,phone

今天撰寫 .NET 程式剛好需要這兩個函數,還好 .NET 已經有內建,不過功能沒有 PHP 的這麼強大,他限定只能接受 String[],用法如下:

String pizza = "piece1 piece2 piece3 piece4 piece5 piece6";
String[] pieces = pizza.Split(new char[]{’ ‘});
Debug.WriteLine(pieces[0]);// piece1
Debug.WriteLine(pieces[1]);// piece2

String[] array = new String[]{"lastname", "email", "phone"};
String comma_separated = String.Join(",", array);
Debug.WriteLine(comma_separated); // lastname,email,phone

Read Full Post »

今天用 DirectSound 測試程式出現如下訊息

"C:WINDOWSassemblyGACMicrosoft.DirectX1.0.2902.0__31bf3856ad364e35Microsoft.DirectX.dll’ 正在 OS 載入器鎖定內嘗試 Managed 執行。請勿嘗試在 DllMain 或影像初始設定函式內部執行 Managed 程式碼,因為這樣做可能導致應用程式停止回應。"

程式沒什麼特別,就是一行 DevicesCollection myDevices = new DevicesCollection(); 就掛了,網路上找到 [1] 提供將 MDA 關閉來處理,也就是關記 "Debug | Exceptions | Managed Debugging Assistants | LoaderLock"

20080223

[2] 對這個問題有更多的討論,據該文所述,問題發生的原因是 .NET 2.0 使用了 MDX 1.1 Assemblies 的關係,所以,最終就是等微軟解決,否則用上述的解法或是退回 VS2003 開發….

參考資料
[1] huwk, "Visual Studio 2005 遇到的錯訊與排除方法"
[2] http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=114707&SiteID=1
[3] The ZBuffer, "Why do I get a ‘LoaderLock’ Error when debugging my Managed DirectX application"

Read Full Post »