2017-05-17 6 views
0

私たちの電話システムで使用するデスクトップクライアントにはAPIがあり、電話の呼び出し時に電話番号を取得できます。 APIを使用するには、DLLを参照して指定します。文字列を連結できない問題

using TelephonyProxy; 

public class program 
{ 

    private static Commander commander; 
    private static Listener listener; 

    static void Main() 
    { 
     commander = new Commander(); 
     listener = new Listener(); 
     SubscribeToListener(); 
    } 

    private static void SubcribeToListener() 
    { 
     Debug.WriteLine("Subscribe To Listener"); 
     listener.Connect += OnConnect; 
     listener.Disconnect += OnDisconnect; 
     listener.Offering += OnOffering; 
     listener.Ringback += OnRingback; 
    } 


    private static void OnOffering(string name, string number) 
    { 
     Debug.WriteLine(number + “abc”); 
    } 
} 

問題は、OnOfferingが正しく呼び出され、電話番号が数値変数にあることです。しかし、デバッグでは番号だけが表示され、「abc」は表示されません。テストでは、数値の前に何かを連結することができますが、後は​​何も無視されます。

あなたは何故そうなのでしょうか?

入力いただきありがとうございます。

+1

は\ 0で番号の末尾をしていますか? \ 0の後のものはレンダリングされません。例: 'var test =" a \ 0b "; Debug.WriteLine(test); // – john

+5

'Debug.WriteLine(number +" abc ");'デバッガが認識するスピーチマークではありません –

+1

@AlfieGoodacreこれらについては疑問に思っていましたが、アプリケーションがコンパイルされていればコンパイルされません彼の問題ではないと私は思う。 – john

答えて

2

ASCII文字0(デバッガでは\ 0)は、文字列を終了するために使用されることがあります。 COMデバイスなどのようなものを扱っている場合、これが当てはまるかもしれません。例えば

Debug.WriteLine("a\0b"); 

意志のみ出力 "A"。 ASCII文字0は印刷されず、後続の文字も出力されません。当然のことながら、このような文字列に何かを追加すると、元の文字列の\ 0の後に何も表示されず、何も表示されません。

COMを扱う場合は、デバッガの文字列を見て、\ 0が最後にあるかどうかを確認してください。

あなたは置き換える使用して削除できます。

Debug.WriteLine(number.Replace("\0", "") + "abc"); 
+0

ありがとう、それはそれをソートしました。 –