Autor Beitrag
kuerbis2
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Di 04.12.07 16:36 
Hallo zusammen,

folgendes kleines Problem bereitet mir im Moment Kopfzerbrechen:

ich benötige eine Art addslashes wie man es von PHP her kennt in meinem Delphi-Projekt.
Zitat:

addslashes -- Stellt bestimmten Zeichen eines Strings ein "\" voran
Beschreibung
string addslashes ( string str )

Gibt einen String (Zeichenkette) zurück, in dem bestimmten Zeichen ein Backslash "\" voran gestellt wurde. Diese Funktion ist z.B. für Datenbankabfragen wichtig. Die behandelten Zeichen sind das einfache und der doppelte Anführungszeichen (' und "), der Backslash selbst (\) sowie NUL (das Null-Byte).

Ein Beispiel für die Verwendung von addslashes() ist das Schreiben von Daten in eine Datenbank. Möchte man zum Beispiel einen Namen wie O'reilly in ein Datenbankfeld schreiben, muss er escaped sein. Die meisten Datenbanken verwenden dafür einen Backslash (\), das bedeutet, der String wird in der Form O\'reilly erwartet. Dies ist ausschließlich für das Einfügen von Daten in eine Datenbank notwendig, der extra \ wird nicht wirklich eingefügt. Hat der php.ini-Parameter magic_quotes_sybase den Wert on, wird ein ' anstelle des Backslashes mit einem weiteren ' escaped.




Bei ZEOS habe ich das nicht gefunden, oder muß ich dann Daten, die "unerwünschte" Zeichen enthalten könnten, grundsätzlich als BLOB speichern?

Danke im Voraus,

Gruss, Kuerbis2
Christian R.
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 04.12.07 18:00 
(komplett falsche Antwort gelöscht)

//Edit: Sorry, hab es falsch gelesen. Für Delphi wie folgt:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
var 
  S : String;
begin
  S := 'O''Reilly';
  S := StringReplace( S, '''', '\''', [ rfReplaceAll ] );
  ShowMessage( S );
end;


Zuletzt bearbeitet von Christian R. am Di 04.12.07 18:56, insgesamt 1-mal bearbeitet
kuerbis2 Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Di 04.12.07 18:52 
Hi Christian,
danke für die schnelle Antwort!

bisher habe ich es so gemacht:

ausblenden Delphi-Quelltext
1:
2:
3:
...
  Head.Text := StringReplace(Head.Text,'''','''''',[rfReplaceAll]); // lustige viele '
...

und erhalte meine lustigen fehler (manchmal).

Bei deinem rpl. werden ja nur die /' erkannt.

Ups, sehe gerade, Du editierst auch gerade ;-)
kuerbis2 Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Di 04.12.07 19:00 
also beim "Antwort komplett gelöscht Teil" der jetzt nicht mehr zu lesen ist....
Christian R.
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 04.12.07 19:03 
Da Escape-Sequenzen für Delphi nicht gebraucht werden, gibt es sicher keine Funktion die AddSlahes() in PHP entspricht. Du müsstest also selber eine Funktion AddSlashes() schreiben, einen Array definieren der die EscapeSeuenzen konstant beinhaltet und mittels Schleife und StringReplace() den übergebenen String formatieren.