Hallo,
ich "missbrauche" eine DataSnap Datenbank Verbindung für einen Remote-Explorer. Der Server läuft auf einem Rechner im Keller und der Client soll mir bestimmte Ordner auf seiner Festplatte anzeigen. Ich möchte nicht einfach normale Windows-Freigaben benutzen, da ich spezielle Shortcuts und andere Funktionen einbauen möchte. Nun bringt es mir nichts die Dateien einfach nur anzukucken, sondern würde ich sie auch gerne runter- und neue Inhalte hochladen.
Das Durchsuchen alleine klappt ganz gut, aber das Runterladen scheitert ab einer Dateigröße > 29 KB.
Die GetFile Methode auf dem Server sieht so aus:
Delphi-Quellcode:
function TDSServerModule1.GetFile(Filename: string): TMemoryStream;
begin
Result := TMemoryStream.Create;
Result.LoadFromFile(Filename);
end;
und der Client ruft sie so auf:
Delphi-Quellcode:
function TForm2.GetFile(Filename: string): Integer;
var
Svr: TDSServerModule1Client;
begin
Svr := TDSServerModule1Client.Create(SQLConnection1.DBXConnection);
try
Result := Svr.GetFile(Filename).Size;
finally
FreeAndNil(Svr);
end;
end;
Und wiegesagt, wenn die angeforderte Datei > 29 KB, dann hat der MemoryStream eine Größe von -1. Lässt sich das irgendwie umgehen oder ist diese Datenbank einfach nicht dazu gemacht große Datenmengen aufeinmal zu übertragen? Ich möchte mich ungern mit Socketprotokollen etc. herumschlagen, diese Methode hier erscheint mir viel einfacher