![]() |
DataSnap und Rückgabewerte
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! |
AW: DataSnap und Rückgabewerte
- 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) |
AW: DataSnap und Rückgabewerte
Danke für deine Antwort!
Also folgendes ist legitim:
Delphi-Quellcode:
function registerUser(sEmail: string): TReturnClass;
|
AW: DataSnap und Rückgabewerte
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. ;-) |
AW: DataSnap und Rückgabewerte
Super danke für den Tipp ;)
|
AW: DataSnap und Rückgabewerte
Zitat:
|
AW: DataSnap und Rückgabewerte
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); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:05 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-2025 by Thomas Breitkreuz