AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi xe2 und #39 =ZWEI Hochkommas
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi xe2 und #39 =ZWEI Hochkommas

Ein Thema von Ykcim · begonnen am 17. Sep 2012 · letzter Beitrag vom 8. Okt 2012
Antwort Antwort
Seite 1 von 2  1 2      
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
856 Beiträge
 
Delphi 12 Athens
 
#1

Delphi xe2 und #39 =ZWEI Hochkommas

  Alt 17. Sep 2012, 09:17
Datenbank: MySQL • Version: 5 • Zugriff über: ohne Komponenten
Hallo Zusammen,

ich nutze #39 um in meinen SQL-Anweisungen Hochkommas zu simulieren. Mit TurboDelphi (Delphi 6) wurde dann ein Hochkomma geschrieben.
Ich versuche gerade auf Delphi xe2 Starter umzusteigen und stelle fest, das in Delphi xe2 mit #39 ZWEI Hochkommas erzeugt werden.

Ist das normal?
Warum ist das so?
Was muss ich tun, wenn ich nur ein Hochkomma haben will?
MYSQL versteht die Anweisung zwar trotzdem, aber ich weiß nicht, wie fehleranfällig das wird, weil ich es nicht verstehe.

Vielen Dank und einen schönen Tag

Ykcim
Patrick
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.687 Beiträge
 
Delphi 2007 Enterprise
 
#2

AW: Delphi xe2 und #39 =ZWEI Hochkommas

  Alt 17. Sep 2012, 09:34
Wie ermittelst du, ob da wirklich zwei Hochkommas bei rum kommen? Nachher ist das nur ein Bug in dieser Methode. Grundsätzlich ist es aber (finde ich) hübscher, Hochkommas mit sich selbst zu escapen. Sprich zwei hintereinander im Delphi-Quelltext ergeben ein Hochkomma: aString := 'Heute gab''s Pommes Rot-Weiß'; Ausgabe: Heute gab's Pommes Rot-Weiß
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer
Online

Registriert seit: 13. Aug 2002
17.210 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Delphi xe2 und #39 =ZWEI Hochkommas

  Alt 17. Sep 2012, 09:51
Bitte etwas mehr infos: Mit welcher Zugriffskomponente erledigst du deinen MySQL-Zugriff?
Wie schaut dein QUellcode aus?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Delphi xe2 und #39 =ZWEI Hochkommas

  Alt 17. Sep 2012, 10:19
Und wie schon x-fach erwähnt

Nutze die Parameter für SQL-Abfragen und man braucht keine "Simulation" vor irgendwas, sondern übergibt einfach das was nachher drin stehen soll.

Code:
INSERT INTO Foo (CharField1) VALUES(:CharField1);
Delphi-Quellcode:
FooQuery.ParamByName('CharField1').Value := MyCharFieldValue;
FooQuery.Execute;
Inhalt von MyCharFieldValue
Code:
Heute gab's Pommes rot-weiß
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Delphi xe2 und #39 =ZWEI Hochkommas

  Alt 17. Sep 2012, 11:04
Und wie schon x-fach erwähnt

Nutze die Parameter für SQL-Abfragen und man braucht keine "Simulation" vor irgendwas, sondern übergibt einfach das was nachher drin stehen soll.
Es gibt durchaus Situationen (Generierung von Anweisungen) in denen es zu diesen Hochkommaorgien kommen kann. Ist besonders interessant wenn man zwischen ' und " wechseln muß.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
856 Beiträge
 
Delphi 12 Athens
 
#6

AW: Delphi xe2 und #39 =ZWEI Hochkommas

  Alt 17. Sep 2012, 22:21
Hallo Zusammen,

vielen Dank für die Antworten.

Ich greife auf den MySQL-Server via der mysql.pas zu und habe dafür drei Proceduren (connect, ExecQuery und disconnect).

Wenn ich eine query zusammenbastel, und ich möchte in einer where-Anweisung nach einem Text suchen, muss der für den MySQL-Server in Hochkommas stehen.

Beispiel:

select * from Tabelle where Name='Ykcim'

In meinem Delphi-Programm sieht das dann so aus:
query:='select * from Tabelle where Name='+#39+'Ykcim'+#39;

oder wenn Yckim in einer Variable steht:
query:='select * from Tabelle where Name='+#39+Variable+#39;

Das klappte ja auch wunderbar in TurboDelphi. Aber in xe2 werden an der Stelle von #39 zwei Hochkommas gesetzt.

Getestet habe ich das, indem ich den Wert der Variablen "query" ausgelesen habe. Ich habe der Variable aus Spaß mal nur den "Wert" #39 zugewiesen, dann werden auch zwei Hochkommas gesetzt. Das ist dann kein Gänsfüßchen ", sondern wirklich zwei Hochkommas.

Vielen Dank

Ykcim
Patrick

Geändert von Ykcim (17. Sep 2012 um 22:38 Uhr)
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
856 Beiträge
 
Delphi 12 Athens
 
#7

AW: Delphi xe2 und #39 =ZWEI Hochkommas

  Alt 5. Okt 2012, 15:28
So, ich bin das Problem jetzt eine Zeit aus dem Weg gegangen, stolpere aber wieder einmal drüber...

Wenn ich eine Abfrage mache, könnte sie wie folgt aussehen:


query:='select * from Tabelle where Feld=''Test'';

So kann ich Eure Antworten verstehen, dass ich das mit mehrfachen Hochkommas erledigen kann. Wenn aber der Wert "Test" in einer Variable steht, bekomme ich ein Problem. Das habe ich vor Delphi xe2 folgender Maßen gelöst:


query:='select * from Tabelle where Feld='+#39+Variable+#39;

Da bekomme ich mit Delphi xe2 jetzt nur noch Murks raus, weil irgendwann zwischen TurboDelphi (Delphi 6) und Delphi xe2 die Änderung vollzogen wurde, dass #39 statt einem Hochkomma (') bei Delphi xe2 zwei Hochkommas ('') (kein Gänsfüßchen) auswirft.

Wie würdet Ihr das Problem lösen? Ich bin nicht mehr in der Lage eine einfache SQL-Anweisung zu generieren, wenn ich dafür keine Lösung finde...

Vielen Dank

Ykcim
Patrick
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.867 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Delphi xe2 und #39 =ZWEI Hochkommas

  Alt 5. Okt 2012, 15:34
Einfachste Lösung: Parameter.
Oder QuotedStr() verwenden
Markus Kinzler
  Mit Zitat antworten Zitat
vagtler

Registriert seit: 9. Jul 2010
Ort: Köln
667 Beiträge
 
Delphi 2010 Professional
 
#9

AW: Delphi xe2 und #39 =ZWEI Hochkommas

  Alt 5. Okt 2012, 15:43
Jetzt fangen wir aber an uns im Kreis zu drehen...
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.867 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Delphi xe2 und #39 =ZWEI Hochkommas

  Alt 5. Okt 2012, 15:46
Ja, aber manche muss man die richtige Lösung mind. 10 mal nenne, dass sie es ihm Wert ist als Möglichkeit in Betracht gezogen zu werden.
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:58 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 by Thomas Breitkreuz