![]() |
Delphi-Version: 10.2 Tokyo
Doppelte Hochkommata
Hallo,
ich bekomme per REST folgende URL: dmsDocObj.URL := ![]() Im Browser führen dann die doppelten Hochkommata zu einer Fehlermeldung: "Die Anforderungs-URI enthält ein ungültiges Schlüsselprädikat." Folgendes habe ich versucht:
Wie bekomme ich die ersetzt durch einzelne? '' --> ' |
AW: Doppelte Hochkommata
Bei mir funktionierts so
Delphi-Quellcode:
lg
s = StringReplace(dmsDocObj.URL, '''''', '''', [rfReplaceALL]);
|
AW: Doppelte Hochkommata
Es scheint als würdest du einfach Hexadezimale und Dezimale Were vertauschen. :)
#27 ist ASCII Dezimal 27 also ein ESCAPE. Um ' darzustellen, musst du 27 Hexadezimal nehmen, also #$27 (Mit dem Dollar Zeichen) oder 39 Dezimal, also #39.
Delphi-Quellcode:
s := StringReplace(dmsDocObj.URL, #$27#$27, #$27, [rfReplaceAll]);
|
AW: Doppelte Hochkommata
oder
Delphi-Quellcode:
s := ReplaceStr(dmsDocObj.URL, #39#39, #39);
oder
Delphi-Quellcode:
s := ReplaceStr(dmsDocObj.URL, '''''', '''');
oder
Delphi-Quellcode:
(das Gegenteil vom
s := AnsiDequotedStr(dmsDocObj.URL, '''');
![]() ![]() oder |
AW: Doppelte Hochkommata
Zitat:
|
AW: Doppelte Hochkommata
Wir hätten auch noch was mit RegEx
oder verschiedene FOR-Schleifen oder ...
Delphi-Quellcode:
:duck:
for var i := 1 to S.Length do if Copy(S, i, 2) = '''''' then Delete(S, i, 1);
und nein, es werden nicht alle ' gelöscht, auch wenn es vielleicht so aussieht :stupid: |
AW: Doppelte Hochkommata
Probier doch mal dieses (erfordert System.Sysutils):
Delphi-Quellcode:
S := dmsDocObj.URL.DeQuotedString;
// alternativ, wenn URL kein regulärer String ist S := string(dmsDocObj.URL).DeQuotedString; |
AW: Doppelte Hochkommata
Vielen Dank für die Lösungsvorschläge!
Das habe ich versucht: s := dmsDocObj.URL.DeQuotedString; // Vorschlag Uwe Raabe s := StringReplace(dmsDocObj.URL, '''''', '''', [rfReplaceAll]); // Vorschlag IceBube s := StringReplace(dmsDocObj.URL, #$27#$27, #$27, [rfReplaceAll]); // Vorschlag milos s := ReplaceStr(dmsDocObj.URL, #39#39, #39); // Vorschlag himitsu s := AnsiDequotedStr(dmsDocObj.URL, ''''); // Vorschlag himitsu Leider keine Änderung. Wenn ich im Debugger auf "Wert ändern" gehe und jeweils die beiden Hochkommata gegen einzelne austausche 'https://ffppas.XXX.de:8443/sap/opu/odata/sap/Z_ISHMED_BASIC_API_SRV/documentsSet(Dokar='LDP',Doknr='10043643970',Doktl ='000',Dokvr='00')/$value' wird hinter "Dokar=" alles abgeschnitten 'https://ffppas.XXX.de:8443/sap/opu/odata/sap/Z_ISHMED_BASIC_API_SRV/documentsSet(Dokar=' |
AW: Doppelte Hochkommata
Auch dies
Delphi-Quellcode:
hilft leider nicht.
for var i := 1 to S.Length do if Copy(S, i, 2) = '''''' then Delete(S, i, 1);
|
AW: Doppelte Hochkommata
Delphi-Quellcode:
s2 wird im interessanten Bereich (Dokar=''LDP'') nacheinander
s := dmsDocObj.URL;
for p := 1 to s.length do begin s2 := Copy(s, p, 2); if s2 = '''''' then Delete(s, p, 1); // Vorschlag himitsu end; 'Do' 'ok' 'ka' 'ar' 'r=' '=''' '''L' 'LD'
Delphi-Quellcode:
wird nie wahr
if s2 = '''''' then
Delphi-Quellcode:
löscht die beiden führenden Hochkommata (gekürzt):
s := dmsDocObj.URL;
for p := 1 to s.length do begin s2 := Copy(s, p, 2); if s2 = '=''' then Delete(s, p+1, 1); end; 'Dokar=LDP''...... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:19 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