![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Возможно ли вывести содержимое текстового файла, находящегося в архиве *.7z в memo и картинку в image не распаковывая файлы на жесткий диск?
Подключены 7z.dll и sevenzip.pas Помогите пожалуйста. |
#2
|
||||
|
||||
![]() См. АПИ 7z.dll, можно вывести список, разархивировать (вроде в поток можно) отдельный файл.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#3
|
|||
|
|||
![]() Я недавно начал программировать на делфи, всех мелочей не знаю. О 7zip читал в readme, там написано как отправить в поток, не уверен что вообще отправляет.
Вот код Open stream: with CreateInArchive(CLSID_CFormat7z) do begin OpenStream(T7zStream.Create(TFileStream.Create('c: \test.7z', fmOpenRead), soOwned)); OpenStream(aStream, soReference); // здесь ругается: Undeclared indentifier:'aStream' ... end; А простое извлечение (на жесткий диск) идет хорошо. |
#4
|
||||
|
||||
![]() Правильно ругается, такой переменной в коде нет. А строкой выше, вообще каша намешана.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#5
|
|||
|
|||
![]() Extract to path
Код:
with CreateInArchive(CLSID_CFormat7z) do begin OpenFile('c:\test.7z'); ExtractTo('c:\test'); end; Open stream Код:
with CreateInArchive(CLSID_CFormat7z) do begin OpenStream(T7zStream.Create(TFileStream.Create('c:\test.7z', fmOpenRead), soOwned)); OpenStream(aStream, soReference); // здесь ругается: Undeclared indentifier:'aStream' ... end; Это предлагают разработчики ![]() |
#6
|
|||
|
|||
![]() Так сначала вывести список, потом выбрать файл, отправить его в поток...
правильно? |
#7
|
||||
|
||||
![]() Цитата:
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#8
|
|||
|
|||
![]() Цитата:
|
#9
|
|||
|
|||
![]() Извините
![]() Так правильно? Код:
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, sevenzip; Код:
procedure TForm1.Button1Click(Sender: TObject); begin with CreateInArchive(CLSID_CFormat7z) do begin OpenFile('c:\test.7z'); ExtractTo('c:\test'); end; end; |
#10
|
||||
|
||||
![]() Правильно. И предыдущий код работать будет, если его написать правильно, а не так как его предложил мифический "разработчик".
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#11
|
|||
|
|||
![]() Хорошо б, но так все равно выдает ошибку.
Код:
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, sevenzip; Код:
procedure TForm1.Button1Click(Sender: TObject); begin with CreateInArchive(CLSID_CFormat7z) do begin OpenStream(T7zStream.Create(TFileStream.Create('d:\test.7z', fmOpenRead), soOwned)); OpenStream(aStream, soReference); end; end; Код:
OpenStream(aStream, soReference); |
#12
|
||||
|
||||
![]() aStream - переменная, которая должна ссылаться на уже созданный поток. Но она нигде не декларирована и не инициализирована.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#13
|
|||
|
|||
![]() Если aStream переменная, но вот так
Код:
procedure TForm1.Button1Click(Sender: TObject); var aStream:integer; begin with CreateInArchive(CLSID_CFormat7z) do begin OpenStream(T7zStream.Create(TFileStream.Create('d:\test.7z', fmOpenRead), soOwned)); OpenStream(aStream, soReference); end; end; если aStream:IInStream; Код:
procedure TForm1.Button1Click(Sender: TObject); var aStream:IInStream; begin with CreateInArchive(CLSID_CFormat7z) do begin OpenStream(T7zStream.Create(TFileStream.Create('d:\test.7z', fmOpenRead), soOwned)); OpenStream(aStream, soReference); end; end; |
#14
|
||||
|
||||
![]() У меня нет данного юнита, чтобы посмотреть как должно быть.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#15
|
|||
|
|||
![]() юнит, длл и readme
![]() |