AnsiString-Problem



  • Hallo,

    ich hoffe hier kann mir jemand helfen mit meinem Anfängerproblem.

    Ich will einer TQuery zur Laufzeit einen String übergeben. Nun habe ich das Problem, dass immer der Fehler "Unzulässige Zeigeraddition" kommt.

    Hier der Code:

    AnsiString strLehrerdetails = "select a.Spalte1" +
                                  "       b.Spalte2" +
                                  " from Tabelle1 as a, Tabelle2 as b";
    

    Wenn ich alles in einer Zeile schreibe, dann funzt es ohne Probleme. Aber aus Gründen der Übersichtlichkeit bei längeren SQL-Anweisungen würde ich gerne wissen wo hier das Problem liegt.

    Danke Schon im Voraus!

    Viele Grüße,
    Christoph



  • Bei einem leeren, dh. nicht initialisierten String kannst du den überladenen '+'-Operator nicht für eine Zeichenkettenaddition verwenden. Es sei denn, du legst fest, dass die Zeichenkette eben auch vom Typ AnsiString ist:

    AnsiString strLehrerdetails = String("select a.Spalte1") +
                                  "       b.Spalte2" +
                                  " from Tabelle1 as a, Tabelle2 as b" + "bla";
    


  • Danke Jansen!

    Funzt nun ohne Probleme.



  • Wobei nicht unerwähnt bleiben sollte, daß die Variante mit den '+' sehr viel Code erzeugt, verursacht durch das "zusammenaddieren" der einzelnen (Teil-)Strings. Es wird jedesmal eine temporäre AnsiString Klasse erzeugt, da eine Zeichenkette in Hochkommas nach wie vor einen Pointer auf den entspr. Text darstellt, der zunächst in einen AnsiString umgewandelt werden muss, um dann an den vorhergehenden String angehängt zu werden.
    Ich würde folgende Variante empfehlen. Dies entspricht einem in einer Zeile geschriebenen String, ist aber, wie gewünscht, übersichtlicher.

    AnsiString strLehrerdetails="select a.Spalte1,"\
                                    "b.Spalte2"\
                                    " from Tabelle1 as a, Tabelle2 as b";
    

    Die Backslash am Schluss können auch weggelassen werden 😉

    [ Dieser Beitrag wurde am 12.01.2003 um 17:11 Uhr von Peter editiert. ]



  • Danke Peter für den Hinweis mit dem Ressourcenbedarf!

    Viele Grüße,
    Bombadil


Anmelden zum Antworten