Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi MemoryStream.Read anders als FileStream.Read (https://www.delphipraxis.net/62865-memorystream-read-anders-als-filestream-read.html)

PASST 10. Feb 2006 16:02


MemoryStream.Read anders als FileStream.Read
 
Hi NG.

Delphi 4 (update 3)

Hier wird datei.1.txt erstellt und enthält auch den gewünschten Inhalt.
Delphi-Quellcode:
  ms := tMemoryStream.Create;
  fs := tFileStream.Create('d:\temp\datei.1.txt', fmCreate);
  HTTP.Get(sUrl, ms);
  ms.Position := 0;
  fs.Copyfrom(ms, ms.Size);
Hier wird enthalten die Strings s oder t keinen Inhalt.
Delphi-Quellcode:
var s, t: String;
...
  ms := tMemoryStream.Create;
  HTTP.Get(sUrl, ms);
  SetLength(s, 32);
  l := ms.Read(s[1], 32);
  t := copy(s, 1, l);
// oder
// SetLength(s, l);
Warum? Was mache ich falsch?

Gruß
Peter

marabu 10. Feb 2006 16:24

Re: MemoryStream.Read anders als FileStream.Read
 
Hallo Peter,

vor dem Lesen aus einem Stream musst du den Positionszeiger an die richtige Stelle setzen:

Delphi-Quellcode:
// ...
  HTTP.Get(sUrl, ms);
  SetLength(s, 32);
  ms.Position := 0;
  SetLength(s, ms.Read(s[1], 32));
Grüße vom marabu

PASST 10. Feb 2006 16:39

Re: MemoryStream.Read anders als FileStream.Read
 
Das ist jetzt aber blöd :wall:
Da habe ich doch glatt angenommen, dass der automatisch am Anfang ist.

D A N K E

Christian Seehase 10. Feb 2006 20:31

Re: MemoryStream.Read anders als FileStream.Read
 
Moin Peter,

Zitat:

Zitat von PASST
Da habe ich doch glatt angenommen, dass der automatisch am Anfang ist.

wenn Du bei CopyFrom als zweiten Parameter 0 angibst (also den gesamten Quellstreaminhalt kopieren willst), stimmt Deine Annahme auch (zumindest ab D7).


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:59 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