" innerhalb eines strings escapen.

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
atroesch
Beiträge: 33
Registriert: Mo 7. Jul 2025, 10:05

" innerhalb eines strings escapen.

Beitrag von atroesch »

ich brauche für einen sql-export / import eine möglichkeit double quote (") zu escapen. also umzuwandeln.
hab es mit verdoppeln versucht aber das geht mit double quote wohl nicht?
in PHP gibt es ja \".
irgendeine ähnliche vorgehensweise in Pascal?

Benutzeravatar
Zvoni
Beiträge: 430
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz 2.2.2 FPC 3.2.2)
CPU-Target: 32Bit
Wohnort: BW

Re: " innerhalb eines strings escapen.

Beitrag von Zvoni »

Hä?
Wieso escapen?

In Pascal werden Single-Quotes zum Zuweisen eines Strings an eine Variable verwendet

Code: Alles auswählen

Var s:String;

Begin
s:='Ich hab ein Double-Quote "Hier" versteckt.';
End;
Oder ich versteh dein Problem komplett falsch
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

atroesch
Beiträge: 33
Registriert: Mo 7. Jul 2025, 10:05

Re: " innerhalb eines strings escapen.

Beitrag von atroesch »

export sql:

Code: Alles auswählen

insert into table values(1,2,"hier ist der "text" der gesetzt wird");
import geht nicht wegen "text";

Stevie
Beiträge: 180
Registriert: Di 27. Feb 2024, 22:40

Re: " innerhalb eines strings escapen.

Beitrag von Stevie »

... sofern Du die FPC Sourcen hast, kannst du unter Linux ganz einfach nach Beispielen suchen:

Code: Alles auswählen

% find ./fpcsrc -type f -iname "*pas"  -exec grep -i "insert into" {} \;
  TDBHelper.ExecSQL('INSERT INTO TESTCPU VALUES (1,''x'')');
  TDBHelper.ExecSQL('INSERT INTO TESTCPU VALUES (2,''y'')');
  TDBHelper.ExecSQL('INSERT INTO TESTOS VALUES (1,''x'')');
  TDBHelper.ExecSQL('INSERT INTO TESTOS VALUES (2,''y'')');
  ...
Was hier wie 'Gänsefüßchen' aussieht, sind in Wirklicheit zwei einfache Hochkommas. So sollte es also gehen...

Benutzeravatar
theo
Beiträge: 10972
Registriert: Mo 11. Sep 2006, 19:01

Re: " innerhalb eines strings escapen.

Beitrag von theo »

atroesch hat geschrieben: Do 14. Aug 2025, 12:17 export sql:

Code: Alles auswählen

insert into table values(1,2,"hier ist der "text" der gesetzt wird");
import geht nicht wegen "text";
Ich verstehe das Problem nicht. Kann es sein, das du dich verrannt hast?
" hat in Pascal keine syntaktische Bedeutung. Stringkonstanten sind in '.
In deinen Beispiel sehe ich nichts, was mit Pascal zu tun hätte.
Das sähe z.B. so aus:

Code: Alles auswählen

SQL:='insert into table values(1,2,''hier ist der '+atext+' der gesetzt wird'')'; 
Vorausgesetzt man verwendet single quotes in SQL.

Ob man das allgemein so macht, sei mal dahingestellt.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6918
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: " innerhalb eines strings escapen.

Beitrag von af0815 »

Willkommen in der SQL-String gefrickel Hölle :-)

Versuch dich an Parametern, damit erspart man sich das ganze Gefrickel. Glaube mir, es wird noch schlimmer mit Datum und Zahlen.

Siehe auch
viewtopic.php?t=13090
https://www.freepascal.org/docs-html/fc ... arams.html
https://wiki.freepascal.org/SqlDBHowto/de dort "Verwendung von Parametern in einer Abfrage"
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

atroesch
Beiträge: 33
Registriert: Mo 7. Jul 2025, 10:05

Re: " innerhalb eines strings escapen.

Beitrag von atroesch »

@af0815
ich nutze bei Abfragen immer parameter. :-)
Es ging ja hier um einen Dump der erstellt werden soll.

Hatte den absoluten Aussetzer.
Wenn ich den dump erstelle kann ich doch einfach sql escapes benutzen..LOL

Code: Alles auswählen

insert into Table values(1,10,"Ich hab ein Double-Quote \"Hier\" versteckt.");
sorry für die unnötige Frage..

Benutzeravatar
Zvoni
Beiträge: 430
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz 2.2.2 FPC 3.2.2)
CPU-Target: 32Bit
Wohnort: BW

Re: " innerhalb eines strings escapen.

Beitrag von Zvoni »

atroesch hat geschrieben: Do 14. Aug 2025, 13:21 Wenn ich den dump erstelle kann ich doch einfach sql escapes benutzen..LOL

Code: Alles auswählen

insert into Table values(1,10,"Ich hab ein Double-Quote \"Hier\" versteckt.");
sorry für die unnötige Frage..
Genau darauf wollte ich hinaus....
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

Antworten