![]() |
Re: String-Literale
Zitat:
Wenn ein einzelnes Literal länger als 255 Zeichen ist kommt diese Fehlermeldung. Lösung: das gesamte Literal an einigen Stellen splitten und mit "+" verbinden: variable := 'Stell dir vor dieses Literal sei länger als 255 Zeichen...'; // geht nicht variable := 'Stell dir vor dieses' + 'Literal sei länger als 255 Zeichen...'; // geht!! Ciao, Ralf |
Re: String-Literale
@Alfi001: Hmm, wenn ich mir deine Erklärung anschaue und meinen Source-Code, habe ich ja schon den String in einzelne "Literale" aufgeteilt. Beim groben durchzählen der einzelnen Literale komme ich auf max. ca. 135 Zeichen... Es hätte also funktionieren müssen, oder?
Der ganze Witz an der Geschichte ist, nehme ich statt der Variable KundenObjData.MandantenId, die Variable MandantenID aus dem Procedure-Kopf dann geht es und an den Literalen habe ich nichts verändert. Also kann es nicht an den Literalen liegen. Es muss was anderes sein und da komme ich einfach nicht hinter. :coder2: |
Re: String-Literale
Zitat:
|
Re: String-Literale
Hallo Stephan,
wenn du dem Compiler deinen ShortString als AnsiString verkaufst, könnte es funktionieren:
Delphi-Quellcode:
Ich kann nur vermuten, daß der Compiler hier Code für die Addition zweier ShortStrings durchführen möchte, und dafür ist die zusammengesetzte Stringkonstante wirklich zu lang. Ein ähnliches Verhalten findet man bei arithmetischen Operationen. Sie werden immer mit dem kleinstmöglichen gemeinsamen Datentyp durchgeführt - es sein denn, man führt einen expliziten TypeCast eines Operanden durch.
'anzahl8, anzahl9, anzahl10, anzahl11, anzahl12, anzahl13, anzahl4) VALUES '+
// '('''+KundenObjData.MandantenId+''','+ '('''+string(KundenObjData.MandantenId)+''','+ ''''+KundenObjData.ObjNr+''','+ Gruß Hawkeye |
Re: String-Literale
Hallo!
Das ist es auch gewesen, er hat die ganzen Dinger als ShortStrings gesehen, daher nur 255 Zeichen. Mit der String-Umwandlung solls funktionieren. Da muss auch einer erstmal drauf kommen... :wall: Vielen Dank nochmal an alle für die schnelle Hilfe und Unterstützung! Stephan |
Re: String-Literale
Wieso bastelt ühr überhaupt so bescheuret Eure Strings zusammen? Entschuldigung, aber in jedem dritten Post sehe ich sowas.
Verwende doch einfach die Format-Funktion und deklariere den SQL-Befehl als Konstante. Das sieht wesentlich übersichtlicher aus, ist es auch und man vermeidet solche Fallstricke. Wenn Du dann den Befehl ändern musst, dann geht das auch viel schneller.
SQL-Code:
Ja gut eh, mit Parametern geht's auch...
Const
sSQLBefehl = 'insert into Foobar (.....) Values (%s, %s, %s)'; Begin MyDataSet.CommandText := Format (sSQLBefehl, [param1, QuotedStr(param2), param3]); ... |
Re: String-Literale
Du hast eigentlich recht, allerdings ist es für mich wesentlich übersichtlicher und lesbarer, wenn ich sie so zusammenbaue.
Ich denke, dass ist eine reine Philosophie-Frage. Fehler können überall auftreten. :) Stephan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz