AGB  ·  Datenschutz  ·  Impressum  







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

TJsonValue mit Punkt im ValueNamen

Ein Thema von gmc616 · begonnen am 2. Sep 2021 · letzter Beitrag vom 2. Sep 2021
 
gmc616

Registriert seit: 25. Jun 2004
Ort: Jena
627 Beiträge
 
Delphi 10.3 Rio
 
#1

TJsonValue mit Punkt im ValueNamen

  Alt 2. Sep 2021, 11:20
Hallo Delphi-Praxis,

ich beschäftige mich zZ mit MS-Graph um aus der Office365-Cloud per REST-API Version 1.0 (https://docs.microsoft.com/de-de/gra...-1.0&tabs=http)
u.a. eMail abholen zu können.

Als Result bekommt man einen JSON-String, welche ich mit den Delphi-Board-Mitteln TJSONObject auslese/parse.
Funktioniert soweit ganz gut.

Da ich ein "vorsichtiger" Programmierer bin, prüfen ich vor dem Lesen der Values mit TJSONObject.FindValue auf das vorhanden sein des ValueNames, bevor ich ihn mit TJSONValue.GetValue schießlich lese.
Ansonsten wirft die Anwendung eine Exception C0000005, sollte der ValueName nicht existieren.

Nun sind aber in diesem MS-Graph-JsonString Values enthalten, an die ich gern heran kommten möchte, welche aber einen Punkt im ValueNamen haben z.B. "@odata.etag".
Laut Delphi-Doku (https://docwiki.embarcadero.com/Libr...alue.FindValue) ist das aber nicht möglich.

Ein direkter Zugriff auf diese Value mit TJSONObject.GetValue funktioniert aber, zumindest wenn das Value tatsächlich existiert. Wenn nicht -> Exception C0000005

Also, FindValue funktioniert hier nicht.
TryGetValue basiert vermutlich ebenfalls auf FindValue und gibt FALSE zurück, auch wenn der ValueName "@odata.etag" existiert.

Nun kann ich ich den Zugriff per try .. execpt zwar kappselt, was dann in der Anwendung funktionieren würde, aber in der IDE wirft der Debugger immer wieder die Exception C0000005, was nervig ist.
Gerade diese Exception C0000005 in der IDE als Ausnahme hinzu zu fügen, ist sicherlich nicht die beste Idee.

Kann ich diese Exception C0000005 im Code/IDE irgendwie unterdrücken? Mit einem Compilier-Schalter eventuell?
Oder kennt jemand eine andere Möglichkeit, diese Exception C0000005 zu umgehen, wenn ich TJSONObject.GetValue('@odata.etag') aufrufen möchte und dieses Value nicht existiert?

Danke.
  Mit Zitat antworten Zitat
 


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 05:04 Uhr.
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