Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.06.2009, 10:40   #11
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Цитата:
Сообщение от Валигози Посмотреть сообщение
Бесполезный флуд.
Я спрашиваю как мне в своём приложении воспользоваться возможностями которые предоставляет 7z.dll из дистрибутива архиватора 7zip - мне же отвечают как загрузить любую DLL к своему приложению.
Я свои DLL-ки писал и подключал ещё в те времена, когда самой свежей Delphi была Delphi 3.
На ваш вопрос дали даже не 1, а несколько хороших ответов..
А если так хорошо разбираетесь в Дельфи и в длл , то может и вопрос сумеете задать всёже поточнее? (ну или там всёже помогут поисковики, или вы надеетесь что ктото завас найдёт ссылки на первоисточники и вам даст? )
Хотя мне не очень трудно я на гугле не забанен начните хотябы отсюда

Последний раз редактировалось vovk; 10.06.2009 в 10:42.
vovk вне форума Ответить с цитированием
Старый 10.06.2009, 11:08   #12
Валигози
 
Регистрация: 09.06.2009
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Скажи ты знаешь какие функции в этой ДЛЛ что делают? Если нет оставь эту идею, или реинженируй ДЛЛку.
Я действительно уже почти неделю реинженирую (с помощью IDA), правда не 7z.dll, а 7z.exe - это консольное приложение которое использует 7z.dll. Например после такой команды:
Код:
7z.exe L file.exe
, на экране появится список содержимого архива. Вообщем то сейчас у меня всё прекрасно работает с помощью 7z.exe (скрыто вызывая через CreateProcess и получая консольный вывод), просто захотелось избавиться от посредника 7z.exe и пользоваться 7z.dll напрямую. Правда реинженеринг туговато продвигается, так как я в этом деле любитель, вот и решил спросить на форуме, вдруг кто-то использовал 7z.dll для своих нужд.

Цитата:
Сообщение от Stilet Посмотреть сообщение
Тебе пытаются сказать что функции из этой ДЛЛ вызываются так-то, но что они делают, какие параметры принимают, может сказать только автор или опытный кракер.
В действительности пока ещё небыло ни одного полезного ответа. Единственно, что мне пытаются научить основам, просто как подключать к своему приложению DLL-ки. Я работаю на предприятии программистом, и занимаюсь Delphi 10 лет, ещё с тех времён когда и интернета небыло, только FIDO, и учить меня элементарным основам Delphi - просто смешно. Такое впечатление, что все (толи от скуки, толи ради развлечения) упорно делают вид, что не понимают заданного вопроса...
Валигози вне форума Ответить с цитированием
Старый 10.06.2009, 11:21   #13
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

7z.exe не использует библиотек. Все процедуры в нём самом.
FaTaL вне форума Ответить с цитированием
Старый 10.06.2009, 11:22   #14
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
упорно делают вид, что не понимают заданного вопроса
Но он действительно непонятен. Если ты работаешь уж столько времени то и сам понимаешь что без мануалов или описаний так просто понять как функи работают невозможно.
А вдруг это еще не все функции? Вдруг не в ДЛЛ дело?
Не парися, прикрути экзешник и пусть работает.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.06.2009, 11:26   #15
BaronTreep
Форумчанин
 
Регистрация: 29.05.2009
Сообщений: 320
По умолчанию

Цитата:
Тебе пытаются сказать что функции из этой ДЛЛ вызываются так-то, но что они делают, какие параметры принимают, может сказать только автор или опытный кракер.
Очевидно, что нужно брать SDK от разработчиков, и смотреть, как пользовать эти функции. Вот тут всё есть

http://www.7-zip.org/sdk.html
BaronTreep вне форума Ответить с цитированием
Старый 10.06.2009, 11:28   #16
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Ёпрст, 7зип же открытый, ищи на SF сорцы, там и заголовки будут. В lzma SDK может есть
пыщь
JTG вне форума Ответить с цитированием
Старый 10.06.2009, 11:43   #17
BaronTreep
Форумчанин
 
Регистрация: 29.05.2009
Сообщений: 320
По умолчанию

Да, там исходники на 4 языках - C/C++/Java/C#. Любой на выбор.

А вид функций для вызова описан в lzma.txt.
BaronTreep вне форума Ответить с цитированием
Старый 10.06.2009, 11:54   #18
Валигози
 
Регистрация: 09.06.2009
Сообщений: 6
По умолчанию

Цитата:
Сообщение от FaTaL Посмотреть сообщение
7z.exe не использует библиотек. Все процедуры в нём самом.
Ничего подобного. Я реинженировал 7z.exe и точно могу сказать, что она не только использует 7z.dll, но и более подробно: один раз вызывает GetNumberOfMethods, потом много раз GetMethodProperty с разными аргументами, потом вызывается GetNumberOfFormats и потом много раз GetHandlerProperty2 с разными параметрами и в конце вызывается CreateObject.
Валигози вне форума Ответить с цитированием
Старый 10.06.2009, 12:01   #19
BaronTreep
Форумчанин
 
Регистрация: 29.05.2009
Сообщений: 320
По умолчанию

А вот и методы прям из исходников :-)

PHP код:
STDAPI GetMethodProperty(UInt32 codecIndexPROPID propIDPROPVARIANT *value)
{
  ::
VariantClear((VARIANTARG *)value);
  const 
CCodecInfo &codec = *g_Codecs[codecIndex];
  switch(
propID)
  {
    case 
NMethodPropID::kID:
    {
      
value->uhVal.QuadPart = (UInt64)codec.Id;
      
value->vt VT_UI8;
      break;
    }
    case 
NMethodPropID::kName:
      if ((
value->bstrVal = ::SysAllocString(codec.Name)) != 0)
        
value->vt VT_BSTR;
      break;
    case 
NMethodPropID::kDecoder:
      if (
codec.CreateDecoder)
        return 
SetClassID(codec.Idfalsevalue);
      break;
    case 
NMethodPropID::kEncoder:
      if (
codec.CreateEncoder)
        return 
SetClassID(codec.Idtruevalue);
      break;
    case 
NMethodPropID::kInStreams:
    {
      if (
codec.NumInStreams != 1)
      {
        
value->vt VT_UI4;
        
value->ulVal = (ULONG)codec.NumInStreams;
      }
      break;
    }
  }
  return 
S_OK;
}

STDAPI GetNumberOfMethods(UINT32 *numCodecs)
{
  *
numCodecs g_NumCodecs;
  return 
S_OK;
}

STDMETHODIMP CCodecs::GetNumberOfMethods(UInt32 *numMethods)
{
  *
numMethods =
      
#ifdef EXPORT_CODECS
      
g_NumCodecs +
      
#endif
      
Codecs.Size();
  return 
S_OK;

+ Еще я понял, что все эти методы, которые Вы вычислили - это некие высокоуровневые конструкторы потоков, сами функции компрессии/декомпрессии инкапсулированы, а прописаны в главных файлах - LzmaEnc.c и LzmaDec.c. Вобщем нужно качать архив с .org/sdk

Последний раз редактировалось BaronTreep; 10.06.2009 в 12:33.
BaronTreep вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль. 2 задачи (Программа "Верификация","КАК БРИГАДИРУ РАЗДЕЛИТЬ ЗАРОБОТАННЫЕ ДЕНЬГИ") Valik102 Помощь студентам 3 20.05.2009 20:42
как превратить "визуальную" иерархию в 1 столбце в "реальную" в нескольких eto Microsoft Office Excel 4 12.03.2009 13:55
Как "динамически" использовать "DLL" Air Общие вопросы Delphi 7 11.12.2007 21:55
Создаю диаграмму "Bar". Подскажите как убрать растояние между "столбами" MAcK Компоненты Delphi 11 24.10.2007 10:49