Форум: "Основная";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];
ВнизИспользование 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.034 c