Einzelnen Beitrag anzeigen

bluescreen25

Registriert seit: 27. Nov 2005
Ort: Geldern
229 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: loadfile aus TMemoryStream

  Alt 21. Feb 2008, 19:21
Zitat von Muetze1:
Also ein Listenerror bedeutet, dass du ein Problem mit einer Liste hast und nicht mit einem Stream. Und zu deiner Liste: Du bekommst doch bestimmt einen Compilerhinweis, dass die Schleifenvariable lCount ausserhalb der Schleife undefiniert ist, oder? Den solltest du mal beachten, dann hättest du vllt. gesehen, dass deine lCount Schleife nur die nachfolgende IF Abfrage beinhaltet und somit kannst du lCount danach vergessen. Dadurch kommt es dann zu dem o.g. Fehler.
Das Problem mit der Liste ist, das wahrscheinlich aFilename nicht gefunden wurde.Das hatte ich nicht abgesichert. Der Stream wurde trotzdem behandelt. Mit lCount haste Recht. In meinem Fall kann ich ja nichts anderes in die Schleife packen, nur das Ergebnis absichern....

Die Routine klappt jetzt auch soweit. Ich hatte exceptions aus versch. Gründen. Dir Liste, dann der Stream wp ich die Pos nicht auf 0 gesetzt hatte.

Mit ladenen pngs als PNGObject klappt jetzt alles. Nun die letzten Probleme noch:

- bei Icons über Stream laden, bekomme ich noch nichts Sichtbares
- bei Images über Stream laden , bekomme ich eine exception: Bitmap ist ungültig.

Delphi-Quellcode:
SkinBackground := TImage.Create(SkinForm);
    with SkinBackground do
    begin
      Parent := SkinForm;
      Name := iString + '_Background';
      SetBounds(0,0, SkinWidth, SkinHeight);
      iString := lowercase(Ini.ReadString(Menu,'Background','0'));
      Picture.RegisterFileFormat('jpg; *.jpeg','JPEG',TBitmap);

      //if FileExists(SkinPfad + iString) then
      //Picture.LoadFromFile(SkinPfad + iString);
      if LoadPicture(SkinPfad + iString)then;
      Picture.Bitmap.LoadFromStream(pFile);
Delphi-Quellcode:
var
  Icon : TIcon;
  iIndex: Integer;
begin
  try
  IL := TImageList.Create(Form1);
  IL.Width := 32;
  IL.Height := 32;
  for iIndex := 0 to 34 do
  begin
    Icon := TIcon.Create;
    //if FileExists(SkinPfad + 'icons\' + Ini.ReadString('Icons','Icon' + IntToStr(iIndex) + 'Picture','0')) then
    //Icon.LoadFromFile(SkinPfad + 'icons\' + Ini.ReadString('Icons','Icon' + IntToStr(iIndex) + 'Picture','0'));
    if LoadPicture(SkinPfad + 'icons\' + Ini.ReadString('Icons','Icon' + IntToStr(iIndex) + 'Picture','0'))then
    Icon.LoadFromStream(pFile);
    IL.AddIcon(Icon);
    Icon.Free;
  end;
Gruß, bluescreen
...und ich dachte, Delphi ist ein Programmgenerator mit nur einem Button......tzzz
  Mit Zitat antworten Zitat