2017-05-17 3 views
0

Der Desktop-Client, den wir mit unserem Telefonsystem verwenden, verfügt über eine API, mit der wir die Telefonnummer des Telefons erfassen können, wenn es klingelt. Um die API zu verwenden, referenzieren Sie eine DLL und spezifizieren.Problem mit einer Zeichenfolge, die nicht verkettet werden kann

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”); 
    } 
} 

Das Problem ist das OnOffering wird korrekt aufgerufen und die Telefonnummer ist in der Variablennummer. Das Debug zeigt jedoch nur die Nummer und nicht die "abc". Beim Testen scheint es, dass man alles vor der Nummer verketten kann, aber alles danach wird ignoriert.

Haben Sie eine Idee, warum das sein könnte?

Dank für jede Eingabe können Sie dies geben.

+1

Does Nummer Ende mit \ 0? Alles nach \ 0 wird nicht gerendert. Beispiel: 'var test =" a \ 0b "; Debug.WriteLine (Test); // druckt nur eine ' – john

+5

' Debug.WriteLine (Nummer + "abc"); 'das sind keine Sprachmarkierungen, die der Debugger erkennt. –

+1

@AlfieGoodacre Ich habe mich über diese Fragen gewundert, aber die Anwendung wird nicht kompiliert, wenn sie es sind Ich vermute, das ist nicht sein Problem. – john

Antwort

2

Das ASCII-Zeichen 0 (im Debugger als \ 0 dargestellt) wird manchmal zum Beenden von Strings verwendet. Wenn Sie mit etwas wie einem COM-Gerät usw. zu tun haben, kann dies der Fall sein.

Zum Beispiel:

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

wird nur dann ausgegeben, "a". Das ASCII-Zeichen 0 wird nicht gedruckt und auch keines der nachfolgenden Zeichen. Das Anhängen von etwas an eine solche Saite bedeutet natürlich, dass nichts nach \ 0 in der ursprünglichen Saite erscheint.

Wenn Sie mit COM befassen, sehen Sie sich die Zeichenfolge im Debugger und sehen, ob \ 0 ist am Ende.

Sie könnten entfernen Sie sie ersetzen mit:

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

Danke, das hat es sortiert. –

Verwandte Themen