AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi DataSnap und Rückgabewerte
Thema durchsuchen
Ansicht
Themen-Optionen

DataSnap und Rückgabewerte

Ein Thema von Dragon27 · begonnen am 11. Okt 2013 · letzter Beitrag vom 11. Okt 2013
Antwort Antwort
Dragon27

Registriert seit: 20. Nov 2003
Ort: Aßling
543 Beiträge
 
Delphi XE6 Enterprise
 
#1

DataSnap und Rückgabewerte

  Alt 11. Okt 2013, 11:35
Hallo zusammen,

ich habe mich nun für DataSnap entschieden und stoße nun auf ein kleines Problem.

Die Beispielmethoden geben ja immer einen String zurück. Das ist einfach....
Aber sagen wir, man will eine Registrierung programmieren. Dann kann da
ja vieles zurückkommen...

Ich meine man benötigt ja eignetlich einen Statuscode, Nachricht etc. Also einen
komplexen Typen.

Wie löst man das sauber und richtig?

Danke!
Delphi is ......... DELPHI!!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#2

AW: DataSnap und Rückgabewerte

  Alt 11. Okt 2013, 12:07
- du kannt mehrere Var-Parameter an eine Funktion übergeben und natürlich nachher auch wieder auslesen
- du kannst ein Daten-Objekt als Result zurückgeben
- du kannst JSON-Objekte als Parameter/Result verwenden
- ...
- du kannst einen Stream als Result zurückgeben
- du kannst ein DataSet zurückgeben
- du kannst notfalls auch eine TStringList oder einen XML-Text als String zurückgeben (oder sonst irgendein Textformat)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (11. Okt 2013 um 12:12 Uhr)
  Mit Zitat antworten Zitat
Dragon27

Registriert seit: 20. Nov 2003
Ort: Aßling
543 Beiträge
 
Delphi XE6 Enterprise
 
#3

AW: DataSnap und Rückgabewerte

  Alt 11. Okt 2013, 12:14
Danke für deine Antwort!

Also folgendes ist legitim:

function registerUser(sEmail: string): TReturnClass;
Delphi is ......... DELPHI!!
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.347 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: DataSnap und Rückgabewerte

  Alt 11. Okt 2013, 12:17
Prinzipiell ja, aber du muss aufpassen, dass du diese Klassen nicht selbst freigibst. Das macht DataSnap nämlich selber, entweder beim nächsten Aufruf der Funktion oder beim Beenden des Programms.
Wenn du das nicht beachtest, gibt es schöne Fehlermeldungen.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Dragon27

Registriert seit: 20. Nov 2003
Ort: Aßling
543 Beiträge
 
Delphi XE6 Enterprise
 
#5

AW: DataSnap und Rückgabewerte

  Alt 11. Okt 2013, 13:11
Super danke für den Tipp
Delphi is ......... DELPHI!!
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.004 Beiträge
 
Delphi 2009 Professional
 
#6

AW: DataSnap und Rückgabewerte

  Alt 11. Okt 2013, 14:16
Prinzipiell ja, aber du muss aufpassen, dass du diese Klassen nicht selbst freigibst. Das macht DataSnap nämlich selber, entweder beim nächsten Aufruf der Funktion oder beim Beenden des Programms.
Beim Sitzungsende werden die Objekte tatsächlich nicht freigegeben? Gut, bei ein paar Dutzend mittelgroßen Objekten mag das ja kein Problem sein...
Michael Justin
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#7

AW: DataSnap und Rückgabewerte

  Alt 11. Okt 2013, 15:17
Wann das genau alles freigegeben wird, kann ich auch nicht mehr sagen.
Aber wer mal ausprobieren will wann es passiert, der kann das ganz einfach im Destructor der Klasse mitlogen/debuggen.
eventuell räumt der bei Sitzungsende uch schon auf.

Bei einigen Typen (z.B. Streams), da stellt Delphi ein Property bereit, über das man regeln kann "ob" diese Objekte von dir oder vom DataSnap freigegeben werden sollen, also in den automatisch generierten Klientklassen ist es zumindestens so.

Wer zurückgegebene Objekte über "längere" Zeit und vorallem über mehrere DataSnapFunktionsaufrufe hinweg aufheben will, der muß sich sowieso selber um die Freigabe kümmern, denn sonst klaut einem das DataSnap das Objekt unterm Arsch weg.

Delphi-Quellcode:
A := DS.RegisterUser('a@b.c');
B := DS.RegisterUser('x@y.z');
MachWas(A); // A ist hier vermutlich schon weg, bzw. durch B ersetzt
MachWas(B);
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (11. Okt 2013 um 15:23 Uhr)
  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 20:55 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