Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Verständnisproblem mit streams (https://www.delphipraxis.net/157194-verstaendnisproblem-mit-streams.html)

ATS3788 2. Jan 2011 16:57

Verständnisproblem mit streams
 
Delphi-Quellcode:
function SetPngPic(Image : TImage; TheStream : TMemoryStream) : boolean;
var
_PNGImage : TPNGImage;
Stream   : TMemoryStream;
begin
try
Result := true;
Stream   := TMemoryStream.Create;
_PNGImage := TPNGImage.Create;
try
Stream.LoadFromStream(TheStream);
_PNGImage.LoadFromStream(Stream);
   Image.Picture.Assign(_PNGImage);
except
Result := false;
end;
finally
_PNGImage.Free;
Stream.Free;
end; end;
Das funktioniert

Delphi-Quellcode:
function SetPngPic(Image : TImage; TheStream : TMemoryStream) : boolean;
var
_PNGImage : TPNGImage;
begin
try
Result := true;
_PNGImage := TPNGImage.Create;
try
_PNGImage.LoadFromStream(TheStream);
   Image.Picture.Assign(_PNGImage);
except
Result := false;
end;
finally
_PNGImage.Free;
end; end;
das nicht.
In TheStream übergebe ich den Stream
wenn ich den dann direkt über
Delphi-Quellcode:
_PNGImage.LoadFromStream(TheStream);
;
lesen möchte geht das nicht.

Macht für mich keinen Sinn

Die Muhkuh 2. Jan 2011 16:59

AW: Verständnisproblem mit streams
 
Delphi-Quellcode:
function SetPngPic(Image : TImage; const TheStream : TMemoryStream) : boolean;
müsste reichen

DeddyH 2. Jan 2011 17:00

AW: Verständnisproblem mit streams
 
Geht es, wenn Du vor dem LoadFromStream dessen Position zunächst auf 0 setzt? Übrigens würde ich zunächst prüfen, ob die übergebenen Objekte auch wirklich vorhanden (Assigned) sind.

Bummi 2. Jan 2011 17:09

AW: Verständnisproblem mit streams
 
Geht beides, der Fehler muß außerhalb liegen.
Ich würde die Basisklasse TStream übergeben....

Delphi-Quellcode:
function SetPngPic(Image : TImage; TheStream : TStream) : boolean;
var
_PNGImage : TPNGImage;
Stream : TMemoryStream;
begin
try
Result := true;
Stream := TMemoryStream.Create;
_PNGImage := TPNGImage.Create;
try
Stream.LoadFromStream(TheStream);
_PNGImage.LoadFromStream(Stream);
   Image.Picture.Assign(_PNGImage);
except
Result := false;
end;
finally
_PNGImage.Free;
Stream.Free;
end;
end;

function SetPngPic2(Image : TImage; TheStream : TStream) : boolean;
var
_PNGImage : TPNGImage;
begin
try
Result := true;
_PNGImage := TPNGImage.Create;
try
_PNGImage.LoadFromStream(TheStream);
   Image.Picture.Assign(_PNGImage);
except
Result := false;
end;
finally
_PNGImage.Free;
end; end;


procedure TForm1.Button1Click(Sender: TObject);
var
  s:TFileStream;
begin
  s :=TFileStream.Create('C:\Bilder\h2o1.png',fmOpenRead );
  try
  //SetPngPic(Image1,s);
  SetPngPic2(Image1,s);
  finally
  s.Free;
  end;
end;

ATS3788 2. Jan 2011 19:50

AW: Verständnisproblem mit streams
 
Danke
Denke ich mir,
ich lasse das erst mal, funktioniert so.:thumb:


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