Die
Exception-Meldung war "Im Projekt Testprog.exe ist ein
Exception der Klasse EExternalException mit der Meldung 'Externe
Exception C0000008' aufgetreten".
Die Servermethode ist im Wesentlichen so implementiert wie in dem Beispiel von BeBored oben, aber der Vollständigkeit halber hier nochmal:
Delphi-Quellcode:
procedure TServerMethods1.UploadFile(str: TStream; Store, FileName: String);
var aFileStream: TFileStream;
BytesReadCount: Integer;
Buffer: array [1 .. 16 * 1024] of Byte;
strPfad: String;
begin
strPfad := CPfad + '\' + Store;
if not DirectoryExists(strPfad) then
begin
MkDir(strPfad);
end;
aFileStream := TFileStream.Create(strPfad + '\' + FileName, fmCreate);
try
repeat
BytesReadCount := str.Read(Buffer, SizeOf(Buffer));
aFileStream.Write(Buffer, BytesReadCount);
until (BytesReadCount < SizeOf(Buffer));
str.Position := 0;
finally
aFileStream.Free;
end;
end;
Der Tipp mit der Abfrage nach dem InstanceOwner war sehr hilfreich, sie liefert hier True. Allerdings ist mir nicht klar, warum der InstanceOwner des Streams hier das DataModule ist. Kann man das irgendwo einstellen?
Mit der besseren Namensgebung hast du natürlich recht, aber es ging mir hier erst mal um einen einfachen Test und die korrekte Funktion.