Autor Beitrag
Obl
Hält's aus hier
Beiträge: 3


Delphi 2007 Enterprise, Delphi XE2 Enterprise
BeitragVerfasst: Di 21.08.12 14:53 
Hallo zusammen,

wir evaluieren gerade die Verwendung eines Datasnap-REST-Servers innerhalb des Unternehmens. Dieser soll unter anderem mit einem Java-Client und Jersey angebunden werden.
Nun ist uns hier ein Bug(?) seitens Delphi und Datasnap aufgefallen. Bei der Übergabe eines Stringparameters mit führender "0" (also etwa "01") an eine Serverfunktion werden die führenden Nullen einfach abgeschnitten. Zuerst dachten wir, dass dies am Zusammenspiel zwischen Jersey und Delphi liegt, tut es aber (leider) nicht, da das Problem auch schon bei den Demoprojekten auftritt.

Sehr gut und schnell nachvollziehbar ist das Problem, wenn in XE2 eine neue "DataSnap-REST-Anwendung" erstellt wird und hier die Beispielmethoden und Beispiel-Webdateien übernommen werden. Ein Aufruf der Funktion "ReverseString" im Webtemplate "ReverseString.html" mit dem Stringparameter "01" führt letztlich zu einem Aufruf mit dem Parameter "1" (ohne führende 0).

Weiß hier jemand einen guten Workaround oder gar einen Patch oder ähnliches? Ansonsten gehe ich davon aus, dass das Thema Datasnap für uns auch schon wieder gestorben ist.

Danke schonmal!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 21.08.12 17:09 
Dies kommt daher, dass alles was in eine Zahl umwandelbar ist auch als solche behandelt wird. Die entsprechende Stelle im Quelltext liegt in der Unit DSService in TDSRESTService.BuildParamArray.

Da diese Funktion nicht virtuell ist, kommt man da auf direktem Weg nicht heran. Man könnte höchstens ein bisschen was im Speicher umbiegen, aber das ist auch keine schöne Lösung. :nixweiss:

Ansonsten bleibt leider nur dafür zu sorgen, dass es keine Zahl ist, wenn es nicht als solche behandelt werden soll...
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Di 21.08.12 18:43 
Es gibt übrigens einen QC-Eintrag dazu. Gibt allerdings auch nicht mehr her, außer dass das bekannt ist.

Sowas passiert halt, wenn man sich in seinen Layers Of Indirection verzettelt.

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."


Zuletzt bearbeitet von Martok am Di 21.08.12 18:46, insgesamt 1-mal bearbeitet

Für diesen Beitrag haben gedankt: jaenicke
Obl Threadstarter
Hält's aus hier
Beiträge: 3


Delphi 2007 Enterprise, Delphi XE2 Enterprise
BeitragVerfasst: Di 21.08.12 18:45 
Hallo jaenicke,
danke für die fachkundige Antwort!
Das Problem ist, das die übergebenen Parameter Teil eines Schlüssels sind die so auch ausgewertet werden sollen, daher also leider nicht so einfach zu umgehen. Finde es etwas seltsam, dass auf diese Weise Parameter "korrigiert" werden, aber naja...

Auch wenn es nicht unbedingt das ist was ich hören wollte hilft mir die Antwort auf jeden Fall sehr viel weiter! ;-)

Vielen Dank.

Edit:
Danke Martok, den Eintrag werde ich mal verfolgen, auch wenn ich nicht wirklich die Hoffnung habe das sich hier in absehbarer Zeit etwas tun wird (was ich leider bei immer mehr QC-Einträgen beobachten muss).
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 22.08.12 18:01 
user profile iconMartok hat folgendes geschrieben Zum zitierten Posting springen:
Es gibt übrigens einen QC-Eintrag dazu. Gibt allerdings auch nicht mehr her, außer dass das bekannt ist.
user profile iconObl hat folgendes geschrieben Zum zitierten Posting springen:
den Eintrag werde ich mal verfolgen, auch wenn ich nicht wirklich die Hoffnung habe das sich hier in absehbarer Zeit etwas tun wird (was ich leider bei immer mehr QC-Einträgen beobachten muss).
Ja, da hatte ich diesmal keine Lust gehabt zu suchen als die Seite wieder so unglaublich schnell war. Auf jeden Fall steht der Eintrag ja auf resolved seit Ende Juli. Dementsprechend können wir davon ausgehen, dass das in XE3 funktionieren wird.