AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke REST-Server Aufruf ohne Parameter -> Access violation
Thema durchsuchen
Ansicht
Themen-Optionen

REST-Server Aufruf ohne Parameter -> Access violation

Ein Thema von Starsky911 · begonnen am 16. Feb 2016 · letzter Beitrag vom 17. Feb 2016
Antwort Antwort
Starsky911

Registriert seit: 8. Feb 2008
Ort: Bremen
102 Beiträge
 
Delphi 11 Alexandria
 
#1

REST-Server Aufruf ohne Parameter -> Access violation

  Alt 16. Feb 2016, 11:47
Hallo,

ich habe einen REST-Server erstellt, über den ich eine Servermethode mit zwei
Parametern definiert habe.

Delphi-Quellcode:
type
{$METHODINFO ON}
  TServerMethods1 = class(TDataModule)
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    function KundeListe(action: string; jObject: TJSONObject): TJSONObject;
  end;
{$METHODINFO OFF}
   
function TServerMethods1.KundeListe(action: string; jObject: TJSONObject): TJSONObject;
var
  s: string;
begin
  if Assigned(jObject) then begin
    if not jObject.Null then begin
     s:=jObject.ToString; <<<-- Access violation bei Aufruf2
     //...
   end;
  end;
end;
Aufruf über Webbrowser:

Aufruf1: localhost:8080/datasnap/rest/TServerMethods1/"KundeListe"/read//
Aufruf2: localhost:8080/datasnap/rest/TServerMethods1/"KundeListe"/read/

Der erste Aufruf funktioniert einwandfrei.
Bei dem zweiten Aufruf fehlt der zweite Parameter was dazu führt das
es zum Access violation kommt.
Eigenartig ist auch, dass "jObject.Null" im Debugger True anzeigt aber
trotzdem in der If-Schleife rein geht.
Irgendwie scheint das jObject einen undefinierten Zustand zu haben.
Gibt es irgendwie eine Möglichkeit den zweiten Parameter auf Gültigkeit
zu prüfen?
Vielen Dank im voraus.

Gruß
Starsky
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.869 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: REST-Server Aufruf ohne Parameter -> Access violation

  Alt 16. Feb 2016, 12:01
Wie ist toString implementiert?
Markus Kinzler
  Mit Zitat antworten Zitat
Starsky911

Registriert seit: 8. Feb 2008
Ort: Bremen
102 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: REST-Server Aufruf ohne Parameter -> Access violation

  Alt 16. Feb 2016, 12:58
toString ist eine Function aus dem Object TJSONObject aus der Unit System.JSON
Aber auch wenn ich die Funktion jObject.Count oder jObject.Size aufrufe
bekomme ich auch einen Access Violation.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: REST-Server Aufruf ohne Parameter -> Access violation

  Alt 16. Feb 2016, 13:11
Dann schau doch mal über den Debugger, wer diese Instanz erzeugt hat (durch den Callstack zurückgehen).

Da gibt irgendetwas wohl eine nicht initialisierte lokale Referenzvariable durch
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Starsky911

Registriert seit: 8. Feb 2008
Ort: Bremen
102 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: REST-Server Aufruf ohne Parameter -> Access violation

  Alt 16. Feb 2016, 13:51
Es ist eine Datasnap-Rest-Anwendung die über
den Assistenten von Delphi XE7 erstellt wurde.
Der Aufruf Stack.
Angehängte Grafiken
Dateityp: png AufrufStack.png (18,6 KB, 17x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: REST-Server Aufruf ohne Parameter -> Access violation

  Alt 16. Feb 2016, 14:39
Du hast den Callstack gefunden

Jetzt brauchst du nur noch dich von oben nach unten durchklicken und schauen, wer diese Instanz erzeugt (bzw. erzeugen sollte).

Dann einen Breakpoint an den Anfang dieser gefundenen Methode, nochmals aufrufen und schauen, warum die Instanz nicht erzeugt wird.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort


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 11:24 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 by Thomas Breitkreuz