Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
14-1109335093
Cosinus
2005-02-25 15:38
2005.03.20
Никак не могу найти подробного описания на ScanLine...


9-1103817250
Malefic
2004-12-23 18:54
2005.03.20
Подскажите плз где можно скачать шрифты (не графические)?


8-1101725343
Dufe
2004-11-29 13:49
2005.03.20
Как сделать в реалтайме обработку видео(DSPack)?


1-1110039402
Leeechhhh
2005-03-05 19:16
2005.03.20
Как выводить свою форму поверх ВСЕХ приложений


1-1110212270
Urvin
2005-03-07 19:17
2005.03.20
Сделать разбиение по строкам





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский