Zeichenketten umbrechen, Compiler füt Sonderzeichen ein



  • Hi Leuts,

    ich habe folgendes Problem:

    strCmd = wxString::Format(_("SELECT * FROM Abschluss WHERE MONAT=%d \
    AND JAHR = %d"),nMonth,nYear);

    Diese Zeile wird vom Compiler korrekt verarbeitet, d.h. in strCmd steht der komplette String drin.

    Bei der folgenden Zeile fügt er nicht druckbare Zeichen nach Buchenungen ein:
    strCmd = wxString::Format(_("INSERT INTO Buchungen \
    VALUES(NULL, %d, %d,%d,'%s',%f,%f,%f,'%s')"), nDay,nMonth,nYear,strText,fIn,fOut,fSteuer,strBeleg);

    Kann mir einer erzählen woran das liegt ?



  • Das liegt am Backslash. Der Compiler nimmt da keine Rücksicht auf ungewollte Zeilenumbrüche in Strings. So verhindert man das:

    strCmd = wxString::Format(_("INSERT INTO Buchungen "
    "VALUES(NULL, %d, %d,%d,'%s',%f,%f,%f,'%s')"), nDay,nMonth,nYear,strText,fIn,fOut,fSteuer,strBeleg);
    


  • warum macht er es dann beim ersten Beispiel richtig ?

    Dein Code geht auch nicht, wahrscheinlich liegts am Unicode.

    error C2308: Nicht übereinstimmende Zeichenfolgen werden verkettet.
    1> wide "INSERT INTO Buchungen " wird mit narrow "VALUES(NULL, %d, %d,%d,'%s',%f,%f,%f,'%s')" verkettet



  • Hallo,

    Grieko schrieb:

    wahrscheinlich liegts am Unicode.

    error C2308: Nicht übereinstimmende Zeichenfolgen werden verkettet.
    1> wide "INSERT INTO Buchungen " wird mit narrow "VALUES(NULL, %d, %d,%d,'%s',%f,%f,%f,'%s')" verkettet

    So ist es, wenn die erste Teil-Zeichenkette der ersten Zeile Unicode werden soll, dann muss man auch für die zweite das _-Makro verwenden:

    strCmd = wxString::Format(_("INSERT INTO Buchungen ")
    _("VALUES(NULL, %d, %d,%d,'%s',%f,%f,%f,'%s')"), nDay,nMonth,nYear,strText,fIn,fOut,fSteuer,strBeleg);
    

    MfG,

    Probe-Nutzer



  • war ich auch schon, er schluckt´s aber trotzdem nicht


Anmelden zum Antworten