Einzelnen Beitrag anzeigen

schwa226

Registriert seit: 4. Apr 2008
400 Beiträge
 
#10

Re: TMemoryStream Größe Limit?

  Alt 27. Nov 2009, 09:30
Danke!

Ja es gibt Memory!

Nun hier mein Test. Zuerst die Items alle in einem Stream Packen und dann wieder in eine neue Imagelist eintragen.
Das geht nun schon ganz gut - Icons sind dann in der sAlphaImageList1.

Jedoch verlieren die Icons durch den Transfer mit dem Stream ihre Transparenz!?

Gibt es da noch was, was ich übersehen habe?

Wenn ich in der sAlphaImageList1 ein Icon manuell einfüge und keines vom Stream hinzufüge ist es transparent.
Wenn eines von dem Stream hizugefügt wird sind keine mehr transparent.

Delphi-Quellcode:
  IconsStream := TMemoryStream.Create;

  //add all icons to stream:
  for i := 0 to sAlphaImageList.Count - 1 do
  begin
    SizeOfIcon := sAlphaImageList.Items[i].ImgData.Size;
    IconsStream.Write(SizeOfIcon,SizeOf(Int64));
    IconsStream.Write(sAlphaImageList.Items[i].ImgData.Memory^, SizeOfIcon);
  end;

  MyIcon := TIcon.Create;
  ReceivedIconStream := TMemoryStream.Create;
  TempStream := TMemoryStream.Create;
  ReceivedIconStream.LoadFromStream(IconsStream);

  FreeAndNil(IconsStream);

  ReceivedIconStream.Position := 0;

  //read all icons from stream:
  while ReceivedIconStream.Position < ReceivedIconStream.Size do
  begin
    ReceivedIconStream.Read(SizeOfIcon,SizeOf(Int64));

    TempStream.SetSize(SizeOfIcon);
    TempStream.Position := 0;
    ReceivedIconStream.Read(TempStream.Memory^,SizeOfIcon);

    MyIcon.LoadFromStream(TempStream);
    sAlphaImageList1.AddIcon(MyIcon);
  end;

    FreeAndNil(MyIcon);
    FreeAndNil(ReceivedIconStream);
    FreeAndNil(TempStream);
Miniaturansicht angehängter Grafiken
untitled_446.png  
Delphi 2010, Update 4 & 5
  Mit Zitat antworten Zitat