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

Вниз

Вопрос к работавшим с DeDe   Найти похожие ветки 

 
FunkyByte ©   (2005-10-11 11:54) [0]

Пытался недавно расковырять одну программулину при помощи небезизвестного декомпиллятора Delphi-программ DeDe. Впринципе в полученном тексте всё более-менее понятно. Вопросы вызывают только конструкции вида System.@LStr... (например, System.@LStrAddRef(void;void):Pointer; или System.@LStrToPChar(String):PAnsiChar;). Ломал мозги над этой писаниной долго и с особым цинизмом, но понять, что это такое так и не смог. Кто-нибудь может объяснить что всё это значит? Буду крайне признателен.


 
Digitman ©   (2005-10-11 11:57) [1]

это значит, что в декомпилированном коде фигурирует, например, вызов ф-ции LStrAddRef() из юнита System


 
Игорь Шевченко ©   (2005-10-11 12:17) [2]


> Ломал мозги над этой писаниной долго и с особым цинизмом,
>  но понять, что это такое так и не смог.


Работа с AnsiString - ничего особенного.


 
FunkyByte ©   (2005-10-11 13:03) [3]


> это значит, что в декомпилированном коде фигурирует, например,
>  вызов ф-ции LStrAddRef() из юнита System

Ситуация в нектором смысле прояснилась, а в нектором даже запуталась. В модуле System действительно есть функция с похожим названием: _LStrAddRef. Отсюда возникает вопрос: куда в декомпиленном коде делся первый символ "_", и что значит заменивший его символ "@"? В случае с переменной конструкция @<имя_переменной> возвращает адресс этой переменной. А в данном случае возвращается точка вхождения в функцию, я правильно понял?


 
Digitman ©   (2005-10-11 13:25) [4]


> в данном случае возвращается точка вхождения в функцию,
> я правильно понял?


да, правильно.


> куда в декомпиленном коде делся первый символ "_"


не обращай на это внимания, считай что это "compiler magic"-символ.


 
Игорь Шевченко ©   (2005-10-11 13:27) [5]


> куда в декомпиленном коде делся первый символ "_", и что
> значит заменивший его символ "@"?


Тебя же не смущает синтаксис

> LStrAddRef(void;void):Pointer


поэтому что там пишет конкретный дизассемблер тебя не должно волновать. Слова void в Object pascal нетути


 
FunkyByte ©   (2005-10-13 21:14) [6]

Кстати, раз уж речь зашла о void: что оно в данном случае значит?


 
Игорь Шевченко ©   (2005-10-13 21:51) [7]

FunkyByte ©   (13.10.05 21:14) [6]

В данном случае оно значит чью-то ошибку, либо твою, когда ты текст переносил, либо DeDe сделавшую идиотский прототип, так как списка агрументов (void;void) быть не может.



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

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

Наверх




Память: 0.48 MB
Время: 0.042 c
4-1126080735
Prov
2005-09-07 12:12
2005.11.06
Обработчик выбора пункта PopupMenu


3-1127721768
_vvv_
2005-09-26 12:02
2005.11.06
DBExpress async call


14-1129410903
lookin
2005-10-16 01:15
2005.11.06
Свойство в Object Inspector может быть неизвестным компилятору?


14-1129187760
TButton
2005-10-13 11:16
2005.11.06
Я вспомнил!!!


3-1127518866
TechnoDreamer
2005-09-24 03:41
2005.11.06
Структура базы - подскажите.