Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.20;
Скачать: CL | DM;

Вниз

Использование 7-zip   Найти похожие ветки 

 
Kirill ©   (2005-03-09 12:52) [0]

Помогите примером использования 7za.dll в Delphi. Никак не могу переделать код из C.


 
TUser ©   (2005-03-09 12:58) [1]

Приведи код на Си


 
Kirill ©   (2005-03-09 13:12) [2]

Для этого надо знать в C в той мере, чтобы переписать основную часть программы в C. А я такими знаниями не обладаю.


 
TUser ©   (2005-03-09 13:21) [3]

Не понял - ты не можешь переделать код из Си. Т.е. сишный код у тебя есть, а ты его переписываешь на Delphi. Но Сишный код ты показать не мощешь, т.к. не можешь переписать его на Си ...
Ерунда какая-то.


 
Kirill ©   (2005-03-09 13:28) [4]

Да. Есть код в 7z415b.tar.bz2
7zip\UI\Client7z\Client7z.cpp
// Client7z.cpp

#include "StdAfx.h"

#include <initguid.h>

#include "Common/StringConvert.h"
#include "../../Common/FileStreams.h"
#include "../../Archive/IArchive.h"
#include "Windows/PropVariant.h"
#include "Windows/PropVariantConversions.h"
#include "Windows/DLL.h"

// {23170F69-40C1-278A-1000-000110050000}
DEFINE_GUID(CLSID_CFormat7z,
 0x23170F69, 0x40C1, 0x278A, 0x10, 0x00, 0x00, 0x01, 0x10, 0x05, 0x00, 0x00);

typedef UINT32 (WINAPI * CreateObjectFunc)(
   const GUID *clsID,
   const GUID *interfaceID,
   void **outObject);

int main(int argc, char* argv[])
{
 if (argc != 2)
 {
   printf("Use Client7z.exe file.7z");
   return 1;
 }
 NWindows::NDLL::CLibrary library;
 if (!library.Load("7za.dll"))
 {
   printf("Can not load library");
   return 1;
 }
 CreateObjectFunc
     createObjectFunc =
     (CreateObjectFunc)library.GetProcAddress("CreateObject");
 if (createObjectFunc == 0)
 {
   printf("Can not get CreateObject");
   return 1;
 }
 CMyComPtr<IInArchive> archive;
 if (createObjectFunc(&CLSID_CFormat7z,
       &IID_IInArchive, (void **)&archive) != S_OK)
 {
   printf("Can not get class object");
   return 1;
 }

 CInFileStream *fileSpec = new CInFileStream;
 CMyComPtr<IInStream> file = fileSpec;

 if (!fileSpec->Open(argv[1]))
 {
   printf("Can not open");
   return 1;
 }
 if (archive->Open(file, 0, 0) != S_OK)
   return 0;
 UInt32 numItems = 0;
 archive->GetNumberOfItems(&numItems);  
 for (UInt32 i = 0; i < numItems; i++)
 {
   NWindows::NCOM::CPropVariant propVariant;
   archive->GetProperty(i, kpidPath, &propVariant);
   UString s = ConvertPropVariantToString(propVariant);
   printf("%s\n", (LPCSTR)GetOemString(s));
 }
 return 0;
}

Это пример использования 7za.dll на C++
Как его переделать в Delphi?


 
Kirill ©   (2005-03-09 14:54) [5]

Гуру, подскажите как использовать 7za.dll на примере упаковки в архив файла и распаковки архива?



Страницы: 1 вся ветка

Текущий архив: 2005.03.20;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.051 c
1-1110296519
rolex
2005-03-08 18:41
2005.03.20
Как сделать чтобы в ListView изменяла ширину только 1я колонка?


3-1108438042
папик
2005-02-15 06:27
2005.03.20
Лог SQL запросов к MS SQL


1-1109854584
serg1977
2005-03-03 15:56
2005.03.20
StringGrid


14-1109551957
lak
2005-02-28 03:52
2005.03.20
секрет очистки грецких орехов :)


1-1109747467
GH@ST
2005-03-02 10:11
2005.03.20
Нужна функция перекодирования строки из win в dos