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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 17.09.2015, 17:28   #1
kotov-zhenja
Пользователь
 
Регистрация: 03.07.2010
Сообщений: 38
По умолчанию Листинк определяющий общее количество функций РЕ

Есть листинг определяющий количество функций используемых РЕ но он выдает нули. В чем ошибка?
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
   List: TStrings;
   i: Integer;
   s: string;
 begin
   List := TStringList.Create;
   try
     ListDLLExports('c:\windows\system32\shell32.dll', List);
     ShowMessage(IntToStr(list.Count) + ' functions in dll');
     s := 'List of functions:';
     for i := 0 to List.Count - 1 do
       s := s + #13#10+List[i];
     ShowMessage(S);
   finally
     List.Free
   end;
 end;
 
procedure TForm1.ListDLLExports(const FileName: string; List: TStrings);
type
   TDWordArray = array [0..$FFFFF] of DWORD;
 var
   imageinfo: LoadedImage;
   pExportDirectory: PImageExportDirectory;
   dirsize: Cardinal;
   pDummy: PImageSectionHeader;
   i: Cardinal;
   pNameRVAs: ^TDWordArray;
   Name: string;
 begin
   List.Clear;
   if MapAndLoad(PansiChar(FileName), nil, @imageinfo, True, True) then
   begin
     try
       pExportDirectory := ImageDirectoryEntryToData(imageinfo.MappedAddress,
         False, IMAGE_DIRECTORY_ENTRY_EXPORT, dirsize);
       if (pExportDirectory <> nil) then
       begin
         pNameRVAs := ImageRvaToVa(imageinfo.FileHeader, imageinfo.MappedAddress,
           DWORD(pExportDirectory^.AddressOfFunctions), pDummy);
         for i := 0 to pExportDirectory^.NumberOfFunctions - 1 do
         begin
           Name := PChar(ImageRvaToVa(imageinfo.FileHeader, imageinfo.MappedAddress,
             pNameRVAs^[i], pDummy));
           List.Add(Name);
         end;
       end;
     finally
       UnMapAndLoad(@imageinfo);
     end;
   end;
 end;
kotov-zhenja вне форума
Старый 17.09.2015, 17:43   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ну и зачем вы создали еще одну тему по тому же вопросу?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определить общее количество функций, которые экспортируются в исполняемый файл kotov-zhenja Общие вопросы Delphi 19 18.09.2015 13:35
подсчитать общее количество книг FraerFAkk Microsoft Office Access 4 02.04.2012 12:26
Подсчитать общее количество марок в коллекции. Narim Общие вопросы C/C++ 1 02.06.2011 13:47
Создать функцию вычисляющую общее количество локальных максимумов leha1993 Паскаль, Turbo Pascal, PascalABC.NET 2 23.05.2011 14:23
Подсчитать количество букв "А" в предложении и общее количество букв.В тексте из файла несколько строк. kvas91 Общие вопросы C/C++ 3 14.11.2010 16:51