AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Zugriffsverletzung bei TJson.JsonToObject<T> mit Laufzeit-Packages
Thema durchsuchen
Ansicht
Themen-Optionen

Zugriffsverletzung bei TJson.JsonToObject<T> mit Laufzeit-Packages

Ein Thema von E.Schubert · begonnen am 15. Aug 2022 · letzter Beitrag vom 24. Aug 2022
 
E.Schubert

Registriert seit: 21. Mai 2012
8 Beiträge
 
#1

Zugriffsverletzung bei TJson.JsonToObject<T> mit Laufzeit-Packages

  Alt 15. Aug 2022, 13:45
Hallo in die Runde,
nach der Umstellung auf Delphi 11 habe ich das Problem, dass der Aufruf von TJson.JsonToObject<T> in meinem Projekt mit Laufzeit-Packages eine Zugriffsverletzung wirft. Wir das Programm ohne Laufzeit-Packages kompiliert läuft alles super. Das Problem trat erst nach der Umstellung auf Delphi 11 auf, mit 10.4 lief das ganze noch super. Zum besseren Verständnis hier noch mal der Quelltext:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TLizenzDocument = class
    F_ID: string;
    F_Ref: string;
  public
    property _ID: string read F_ID write F_ID;
    property _Ref: string read F_Ref write F_Ref;
  end;
  TLizenzDocumentArray = array of TLizenzDocument;

  TForm1 = class(TForm)
    Memo1: TMemo;
    ListBox1: TListBox;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
    function ConvertJsonToMobile5LizenzDocumentArray(AContent: string): TLizenzDocumentArray;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

uses
  System.Json,
  Rest.Json,
  REST.Json.Types;

{$R *.dfm}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
var
  VLizenzen: TLizenzDocumentArray;
  I: Integer;
begin
  ListBox1.Items.Clear;
  VLizenzen := ConvertJsonToMobile5LizenzDocumentArray(Memo1.Text);
  for I := 0 to Length(VLizenzen) - 1 do
    ListBox1.Items.Add(VLizenzen[I]._ID);
end;

function TForm1.ConvertJsonToMobile5LizenzDocumentArray(AContent: string): TLizenzDocumentArray;
var
  VJSONArray: TJSONArray;
  VJSONValue: TJSONValue;
  VJSONObject: TLizenzDocument;
begin
  VJSONArray := TJSONObject.ParseJSONValue(AContent) as TJSONArray;
  Result := [];
  for VJSONValue in VJSONArray do
  begin
    //--- hier wird die Zugriffsverletzung geworfen ---
    VJSONObject := TJson.JsonToObject<TLizenzDocument>(VJSONValue as TJSONObject);
    Result := Result + [VJSONObject];
  end;
end;

end.
Hat jemand eine Idee, wo ich hier ansetzen könnte.

Vielen Dank
  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 08:51 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