Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Doppelte Hochkommata (https://www.delphipraxis.net/212932-doppelte-hochkommata.html)

ConnorMcLeod 27. Apr 2023 09:54

AW: Doppelte Hochkommata
 
Was passiert, wenn man die doppelten einfachen Hochkommata auswechselt auf doppelte Hochkommata chr(34) ?

tewes 27. Apr 2023 10:33

AW: Doppelte Hochkommata
 
Zitat:

Zitat von ConnorMcLeod (Beitrag 1521633)
Was passiert, wenn man die doppelten einfachen Hochkommata auswechselt auf doppelte Hochkommata chr(34) ?

So
Delphi-Quellcode:
s := ReplaceStr(dmsDocObj.URL, '''''', '""');
bleiben die doppelten einfachen Hochkommata

Delphi.Narium 27. Apr 2023 10:54

AW: Doppelte Hochkommata
 
Zitat:

Zitat von tewes (Beitrag 1521640)
So
Delphi-Quellcode:
s := ReplaceStr(dmsDocObj.URL, '''''', '""');
bleiben die doppelten einfachen Hochkommata

Daraus schließe ich jetzt einfach mal: Die doppelten Hochkommata '' sehen aus wie '' sind in Wirklichkeit aber keine, sondern etwas bisher Unbekanntes.
Delphi-Quellcode:
s := dmsDocObj.URL;
s2 := '';
for p := 1 to s.length do
begin
  s2 := Format('%s#%.3d',[s2,Ord(Copy(s, p, 1))]);
end;
ShowMessage(s2);
Was kommt da raus?

Steht dadrinne irgendwo #061#039#039#076#068#080#039#039?
Wenn nein, was sind die zwei Zeichen vor #076#068#080 und was die zwei Zeichen dahinter?

Die Url im Eingangspost läßt sich im FireFox ohne besagte Fehlermeldung aufrufen.

Poste bitte mal die Originalurl aus dmsDocObj.URL (alles ab /sap/) zwischen [code]hier die Url einfügen[/code]-Tags.

ConnorMcLeod 27. Apr 2023 11:15

AW: Doppelte Hochkommata
 
Zitat:

Zitat von tewes (Beitrag 1521640)
Zitat:

Zitat von ConnorMcLeod (Beitrag 1521633)
Was passiert, wenn man die doppelten einfachen Hochkommata auswechselt auf doppelte Hochkommata chr(34) ?

So
Delphi-Quellcode:
s := ReplaceStr(dmsDocObj.URL, '''''', '""');
bleiben die doppelten einfachen Hochkommata

Sorry, habe zu kurz formuliert... ich meinte
Delphi-Quellcode:
StringReplace(dmsDocObj.URL, '''''', '"', [rfReplaceAll]);

... oder besser lesbar ...

StringReplace(dmsDocObj.URL, chr(39) + chr(39), chr(34), [rfReplaceAll]);
Also nur durch ein einziges doppeltes HK ersetzen.

himitsu 27. Apr 2023 11:58

AW: Doppelte Hochkommata
 
Wird im Debugger das doppelte '' angezeigt, oder ist es wirklich drin?

Im Debugger sieht ein ab'cd natürlich aus wie
Delphi-Quellcode:
'ab''cd'
, genauso wie im Quellcode, aber IM String ist natürlich nur ein '.

tewes 27. Apr 2023 12:00

AW: Doppelte Hochkommata
 
Zitat:

Zitat von ConnorMcLeod (Beitrag 1521656)
Zitat:

Zitat von tewes (Beitrag 1521640)
Zitat:

Zitat von ConnorMcLeod (Beitrag 1521633)
Was passiert, wenn man die doppelten einfachen Hochkommata auswechselt auf doppelte Hochkommata chr(34) ?

So
Delphi-Quellcode:
s := ReplaceStr(dmsDocObj.URL, '''''', '""');
bleiben die doppelten einfachen Hochkommata

Sorry, habe zu kurz formuliert... ich meinte
Delphi-Quellcode:
StringReplace(dmsDocObj.URL, '''''', '"', [rfReplaceAll]);

... oder besser lesbar ...

StringReplace(dmsDocObj.URL, chr(39) + chr(39), chr(34), [rfReplaceAll]);
Also nur durch ein einziges doppeltes HK ersetzen.

Code:
'/sap/opu/odata/sap/Z_ISHMED_BASIC_API_SRV/documentsSet(Dokar=''LDP'',Doknr=''10043643970'',Doktl=''000'',Dokvr=''00'')/$value'
Delphi-Quellcode:
s := StringReplace(dmsDocObj.URL, chr(39) + chr(39), chr(34), [rfReplaceAll]);
ergibt
Code:
'/sap/opu/odata/sap/Z_ISHMED_BASIC_API_SRV/documentsSet(Dokar=''LDP'',Doknr=''10043643970'',Doktl=''000'',Dokvr=''00'')/$value'

tewes 27. Apr 2023 12:01

AW: Doppelte Hochkommata
 
Zitat:

Zitat von himitsu (Beitrag 1521664)
Wird im Debugger das doppelte '' angezeigt, oder ist es wirklich drin?

Im Debugger sieht ein ab'cd natürlich aus wie
Delphi-Quellcode:
'ab''cd'
, genauso wie im Quellcode, aber IM String ist natürlich nur ein '.

Meine Beispiele sind mit "Wert kopieren" ausgelesen.

tewes 27. Apr 2023 12:17

AW: Doppelte Hochkommata
 
Zitat:

Zitat von Delphi.Narium (Beitrag 1521649)
Zitat:

Zitat von tewes (Beitrag 1521640)
So
Delphi-Quellcode:
s := ReplaceStr(dmsDocObj.URL, '''''', '""');
bleiben die doppelten einfachen Hochkommata

Daraus schließe ich jetzt einfach mal: Die doppelten Hochkommata '' sehen aus wie '' sind in Wirklichkeit aber keine, sondern etwas bisher Unbekanntes.
Delphi-Quellcode:
s := dmsDocObj.URL;
s2 := '';
for p := 1 to s.length do
begin
  s2 := Format('%s#%.3d',[s2,Ord(Copy(s, p, 1))]);
end;
ShowMessage(s2);
Was kommt da raus?

Steht dadrinne irgendwo #061#039#039#076#068#080#039#039?
Wenn nein, was sind die zwei Zeichen vor #076#068#080 und was die zwei Zeichen dahinter?

Die Url im Eingangspost läßt sich im FireFox ohne besagte Fehlermeldung aufrufen.

Poste bitte mal die Originalurl aus dmsDocObj.URL (alles ab /sap/) zwischen [code]hier die Url einfügen[/code]-Tags.

Copy() ergänzt um Copy()[1]
Delphi-Quellcode:
s := dmsDocObj.URL;
s2 := '';
for p := 1 to s.length do
begin
  s2 := Format('%s#%.3d',[s2, Ord(Copy(s, p, 1)[1] )]);
end;
Code:
'#104#116#116#112#115#058#047#047#102#102#112#112#097#115#046#097#100#046#107#108#105#110#105#107#046#117#110#105#045#117#108#109#046#100#101#058#056#052#052#051#047#115#097#112#047#111#112#117#047#111#100#097#116#097#047#115#097#112#047#090#095#073#083#072#077#069#068#095#066#065#083#073#067#095#065#080#073#095#083#082#086#047#100#111#099#117#109#101#110#116#115#083#101#116#040#068#111#107#097#114#061#039#076#068#080#039#044#068#111#107#110#114#061#039#049#048#048#052#051#054#052#051#057#055#048#039#044#068#111#107#116#108#061#039#048#048#048#039#044#068#111#107#118#114#061#039#048#048#039#041#047#036#118#097#108#117#101'
Es steht nur jeweils ein #039 davor und danach. Damit wäre der String korrekt und ich muss den Fehler an anderer Stelle suchen...:oops:

himitsu 27. Apr 2023 12:25

AW: Doppelte Hochkommata
 
Zitat:

Zitat von tewes (Beitrag 1521667)
Zitat:

Zitat von himitsu (Beitrag 1521664)
Wird im Debugger das doppelte '' angezeigt, oder ist es wirklich drin?

Im Debugger sieht ein ab'cd natürlich aus wie
Delphi-Quellcode:
'ab''cd'
, genauso wie im Quellcode, aber IM String ist natürlich nur ein '.

Meine Beispiele sind mit "Wert kopieren" ausgelesen.

Wie gesagt, dann ist nur 1 Apostroph im String.
Angezeigt/kopiert wird die Schreibweise der String-Konstante.
Darum auch vorne und hinten noch je ein '


Wären es wirklich Doppelte, dann sähe es so aus
Delphi-Quellcode:
'/sap/opu/odata/sap/Z_ISHMED_BASIC_API_SRV/documentsSet(Dokar=''''LDP'''',Doknr=''''10043643970'''',Doktl=''''000'''',Dokvr=''''00'''')/$value'


Delphi-Quellcode:
'/sap/opu/odata/sap/Z_ISHMED_BASIC_API_SRV/documentsSet(Dokar=''LDP'',Doknr=''10043643970'',Doktl=''000'',Dokvr=''00'')/$value'

entspricht
/sap/opu/odata/sap/Z_ISHMED_BASIC_API_SRV/documentsSet(Dokar='LDP',Doknr='10043643970',Doktl ='000',Dokvr='00')/$value

die Konstante hätte aber auch z.B. so aussehen können
Delphi-Quellcode:
'/sap/opu/odata/sap/Z_ISHMED_BASIC_API_SRV/documentsSet(Dokar='#39'LDP'#39',Doknr='#39'10043643970'#39',Doktl='#39'000'#39',Dokvr='#39'00'#39')/$value'

oder in der ausführlichen Schreibweise
Delphi-Quellcode:
'/sap/opu/odata/sap/Z_ISHMED_BASIC_API_SRV/documentsSet(Dokar=' + #39 + 'LDP' + #39 + ',Doknr=' + #39 + '10043643970' + #39 + ',Doktl=' + #39 + '000' + #39 + ',Dokvr=' + #39 + '00' + #39 + ')/$value'

oder oder oder ...

Ein doppeltes '' in der String-Konstante ist ein '-Zeichen.
Ein einfaches ' am Anfang/Ende/Dazwischen ist der Anfange oder das Ende der Konstante.
Und ''' am Anfang oder Ende sind der Anfang/Ende plus ein '-Zeichen.


Ähnlich wie in C-Sprachen ein \-Zeichen als \\ in String-Konstanten steht.

Rolf Frei 27. Apr 2023 12:40

AW: Doppelte Hochkommata
 
Zitat:

Zitat von tewes (Beitrag 1521574)
Hallo,

ich bekomme per REST folgende URL:
dmsDocObj.URL :=
https://ffppas.XXX.de:8443/sap/opu/o...entsSet(Dokar=''TUP'',Doknr=''10043430922'',Doktl=''000'',Dokvr=''00'')/$value

Das Problem ist einfach nur, dass weder ' noch " in einer URL zugelassen sind und diese URL-codiert werden müssen. Deine fertige URL müsste wie folgt sein: .../documentsSet(Dokar=%39LDP%39,Doknr=%3910043643970% 39 ... usw.

" entspricht %39 als urlcodierter Wert.

Alle hier erwähnten Lösungen konvertieren den Text in Delphi Syntax, aber lösen nicht den Grundfehler, dass die URL nicht korrekt codiert ist.

EDIT: Das letzte %39 in meienem obigen Beispiel darf kein Leerschlag enthalten! Also immer %39, da macht die Forumsoftware irgend was damit falsch.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:11 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz