Delphi XE2 DataSnap - Datei über TStream mit Fortschrittsbalken herunterladen

8

Ich habe eine DataSnap-Servermethode geschrieben, die ein TStream-Objekt zurückgibt, um eine Datei zu übertragen. Die Client-Anwendung ruft die Methode auf und liest den Stream in Ordnung. Mein Problem ist, dass der Methodenaufruf eine Weile dauert, bevor das TStream-Objekt gelesen werden kann, aber auf der Serverseite kann ich sehen, dass der Methodenaufruf nur eine Sekunde dauert, um das zurückzugebende Objekt zu erstellen. Ich hatte gehofft, dass das Stream-Objekt sofort zurückgegeben würde, damit ich den Stream lesen und einen Fortschrittsbalken für den Download-Fortschritt anzeigen kann. Gibt es eine andere Möglichkeit, dies zu tun?

Die Servermethode ist sehr einfach:

%Vor%     
Jonathan Wareham 17.01.2012, 09:38
quelle

2 Antworten

2

So habe ich es vor einiger Zeit gemacht. Ich benutzte XE und hatte keine Chance, es zu säubern.

// Serverseite:

%Vor%

// Clientseite:

%Vor%

Sie können BufSize beliebig einstellen. Ich hatte Schwierigkeiten, die Größe des Stroms zu bekommen, bis ich es auf diese Weise gemacht habe. Ich experimentierte mit XE2 und schien nicht das selbe Problem zu haben, aber ich lud hoch. Es gibt wahrscheinlich eine bessere Möglichkeit, die Größe des Streams abzurufen. Wenn ich die Antwort bald bekomme, lasse ich es Sie wissen ....

Noch eine Anmerkung - Ich habe nicht herausgefunden, wie man eine Fortschrittsanzeige auf der Serverseite anzeigt. Ich versuche das immer noch herauszufinden.

Ich hoffe, das hilft! Lass es mich wissen, wenn du irgendwelche Fragen hast!

    
Tadpole 18.01.2012 11:18
quelle
0

Ich bin froh, dass Sie etwas Glück haben! Das ist die andere Lösung, die ich tun musste. Sie können auf diesen Link Ссылка

verweisen

Nach dem Tauchen in den Code fand ich in "Data.DBXJSONReflect.pas"

Prozedur TJSONPopulationCustomizer.PrePopulate (Daten: TObject; rttiContext: TRttiContext); ...

%Vor%

...

Ich denke, es sollte so sein:

%Vor%     
Tadpole 25.01.2012 11:22
quelle