AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

PAnsiChar um weiteres PAnsiChar ergänzen

Ein Thema von hedie · begonnen am 3. Feb 2016 · letzter Beitrag vom 7. Feb 2016
Antwort Antwort
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

AW: PAnsiChar um weiteres PAnsiChar ergänzen

  Alt 3. Feb 2016, 14:46
Das Ende muss so aussehen:

...+ForTable+'''';

Edit: Sorry ich hab scheinbar nur 10% des Threads gelesen
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.401 Beiträge
 
Delphi 12 Athens
 
#2

AW: PAnsiChar um weiteres PAnsiChar ergänzen

  Alt 3. Feb 2016, 15:51
Delphi 2009 oder neuer? (ich wette mal)
[EDIT] Jupp

Zitat:
Kommt leider weiterhin die Meldung dass "S" keine gültige Syntax sei.
Delphi-Quellcode:
var
  Query: String;
Und ich wette, daß der Compiler eine WARNUNG ausgibt, vonwegen String UnicodeString und PAnsiChar.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: PAnsiChar um weiteres PAnsiChar ergänzen

  Alt 3. Feb 2016, 16:02
Hallo,
PChars werden per StrCopy verkettet.

Aber ich würde auf jeden Fall auf String umstellen, in diesem Fall aber auf AnsiString (Query: AnsiString).

Heiko
Heiko
  Mit Zitat antworten Zitat
hedie

Registriert seit: 12. Dez 2005
Ort: Schweiz
1.024 Beiträge
 
Delphi XE6 Starter
 
#4

AW: PAnsiChar um weiteres PAnsiChar ergänzen

  Alt 4. Feb 2016, 18:44
Danke für eure Antworten.

Ein umstellen auf String ist nicht ganz so trivial.
Ich verwende die MySQL.pas unit welche mit der limysql.dll spricht.

Einer von vielen Abschnitten sieht wie folgt aus:

Delphi-Quellcode:
var
  _mysql_real_query: function (_mysql: PMYSQL; q: PAnsiChar; length: longword): longint; stdcall;

function mysql_real_query(_mysql: PMYSQL; q: PAnsiChar; length: longword): longint;
begin
  if @_mysql_real_query=nil
  then
    LoadProcAddress(@_mysql_real_query, 'mysql_real_query');
  Result := _mysql_real_query(_mysql, q, length);
end;

Offensichtlich, erwartet die DLL hier ein PAnsiChar.
So wie es aussieht, bleibt mir der Weg über StrCpy nicht erspart.
Claudio
Tu was du nicht lassen kannst
- http://endasmedia.ch
  Mit Zitat antworten Zitat
hedie

Registriert seit: 12. Dez 2005
Ort: Schweiz
1.024 Beiträge
 
Delphi XE6 Starter
 
#5

AW: PAnsiChar um weiteres PAnsiChar ergänzen

  Alt 4. Feb 2016, 19:31
hab die Lösung:

PAnsiChar(AnsiString(stringVar)); Das ist alles!

Ergebnis:

Delphi-Quellcode:
var
  Query:PAnsiChar;
begin
...
  Query := PAnsiChar(AnsiString('SELECT * FROM COLUMNS WHERE TABLE_SCHEMA = '''+InDatabase+''' AND TABLE_NAME = '''+ForTable+''''));
Claudio
Tu was du nicht lassen kannst
- http://endasmedia.ch
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.401 Beiträge
 
Delphi 12 Athens
 
#6

AW: PAnsiChar um weiteres PAnsiChar ergänzen

  Alt 7. Feb 2016, 16:20
Ich würde eher empfehlen das in UTF-8 zu konvertieren, anstatt nach ANSI.
Natürlich vorher die Connection auch auf UTF-8 eintellen.

Und es gibt garantiert eine "Quote"-Funktion, welche man statt ...'''+InDatabase+'''... verwenden sollte.

Quasi so in etwa ...'+mysql_quote_name(InDatabase)+'... .
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 7. Feb 2016 um 16:23 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.224 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: PAnsiChar um weiteres PAnsiChar ergänzen

  Alt 7. Feb 2016, 16:25
Ich verwende die MySQL.pas unit welche mit der limysql.dll spricht.
Auch wenn etwas off-Topic ist:
Bedenke das du durch die Verwendung der libmysql.dll nach Interpretation von Oracle deine SW auch GPL-Lizenziert sein muss.

Bedenke auch das du mit deinem ganzen String-Zusammengebastel sehr anfällig für SQL-Injection bist:
https://xkcd.com/327/
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Antwort Antwort


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 00:54 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