Показать сообщение отдельно
  #14  
Старый 06.07.2012, 17:50
Aptic7 Aptic7 вне форума
Прохожий
 
Регистрация: 24.06.2012
Сообщения: 11
Репутация: 10
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  I          : Integer;
  MemStream  : TMemoryStream;
  jpg        : TJpegImage; //ошибка- Undeclared identifier: 'TJpegImage'
begin
  MemStream := TMemoryStream.Create;
  try
    with CreateInArchive(CLSID_CFormat7z) do
    begin
      OpenFile('test.7z');
      for I := 0 to NumberOfItems - 1 do
        if not ItemIsFolder[i] then
        begin
          MemStream.Clear;
          ExtractItem(I, MemStream, False);
          MemStream.Position := 0;
          case I of
            0 :
            begin
              jpg := TJPEGImage.Create;
              try
                jpg.LoadFromStream(MemStream);
                Image1.Picture.Assign(jpg);
              finally
                jpg.Free;
              end;
            end;
            1 : Memo1.Lines.LoadFromStream(MemStream);
          end;
        end;
    end;
  finally
    MemStream.Free;
  end;
end;



Вместо TJpegImage пишу TGraphic.
Картинка в архив запакована первой (*.jpg).
После нажатия Button1 - ошибка: Project raised exception class EAbstractError with message 'AbstractError'.
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  I          : Integer;
  MemStream  : TMemoryStream;
  jpg        : TGraphic;
begin
  MemStream := TMemoryStream.Create;
  try
    with CreateInArchive(CLSID_CFormat7z) do
    begin
      OpenFile('test.7z');
      for I := 0 to NumberOfItems - 1 do
        if not ItemIsFolder[i] then
        begin
          MemStream.Clear;
          ExtractItem(I, MemStream, False);
          MemStream.Position := 0;
          case I of
           0 :
           begin
            jpg := TGraphic.Create;
            try
             jpg.LoadFromStream(MemStream);
             Image1.Picture.Assign(jpg);
            finally
             jpg.Free;
            end;
           end;
           1 : Memo1.Lines.LoadFromStream(MemStream);
          end;
        end;
    end;
  finally
    MemStream.Free;
  end;
end;


Текст читается без картинки
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  I          : Integer;
  MemStream  : TMemoryStream;
begin
  MemStream := TMemoryStream.Create;
  try
    with CreateInArchive(CLSID_CFormat7z) do
    begin
      OpenFile('test.7z');
      for I := 0 to NumberOfItems - 1 do
        if not ItemIsFolder[i] then
        begin
          MemStream.Clear;
          ExtractItem(I, MemStream, False);
          MemStream.Position := 0;
          case I of
           0 : Memo1.Lines.LoadFromStream(MemStream);
          end;
        end;
    end;
  finally
    MemStream.Free;
  end;
end;
Ответить с цитированием