AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Laden eines tMemoryStream in ein Tstream ohne Datei zwischen zu speichern
Thema durchsuchen
Ansicht
Themen-Optionen

Laden eines tMemoryStream in ein Tstream ohne Datei zwischen zu speichern

Ein Thema von fisipjm · begonnen am 18. Jan 2018 · letzter Beitrag vom 24. Jan 2018
 
fisipjm

Registriert seit: 28. Okt 2013
328 Beiträge
 
Delphi 12 Athens
 
#5

AW: Laden eines tMemoryStream in ein Tstream ohne Datei zwischen zu speichern

  Alt 18. Jan 2018, 14:43
Hoika, bist offiziell mein Held des Tages.

Die anderen Antworten gingen leider bissel am eigentlichen Problem vorbei.
Die Variable ms hatte ich ursprünglich auch tatsächlich als TmemoryStream deklariert. Nur AddBody hat mit kein TMemoryStream geschluckt. Mir war nicht klar das man TMemoryStream.create auch auf ein Tstream anwenden kann.

Für die die es Interessiert, hab es jetzt so gelöst:


Delphi-Quellcode:
procedure upload(File : olevariant)
var
  ms: TStream;
  p: Pointer;
begin
 ...
 ms := tMemoryStream.create;
 try
  ms.position:=0;
  p := varArrayLock(File);
  ms.Writebuffer(p^,VarArrayHighBound(File,1));
  VarArrayUnlock(File);
  RESTRequest.addbody(ms,ContentType);
  RESTRequest.execute;
 finally
  ms.free;
 end;
end;
Der Vollständigkeit halber noch der Rückweg, der war ja im Beispiel auch mit einem Filestream gelöst!

Delphi-Quellcode:
function download(PfadZumFile:string):olevariant;
var
 lms : tstream;
 buffer : pointer;
begin
 ...
 restclient.baseurl:=PfadZumFile;
 restrequest.execute;
 ...
 lms:=Tmemorystream.create;
 try
  lms.writeData(RestResponse.RawBytes,length(restresponse.rawbytes));
  lms.position:=0;
  result:= VarArrayCreate({0, lms.size -1}, varByte);
  buffer:= VarArrayLock(Result);
  lms.ReadBuffer(Buffer^,lms.size);
  VarArrayUnloack(Result);
 finally
  lms.free;
 end;
end;
Funktioniert super! keine Datei auf der Platte und gefühlt ein wenig schneller
Vielen Dank mal wieder für die schnelle und gute Hilfe.

Gruß
PJM

Geändert von fisipjm (19. Jan 2018 um 07:56 Uhr) Grund: Download eingebunden
  Mit Zitat antworten Zitat
 

 

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 15:03 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 by Thomas Breitkreuz