Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.027 c
2-1129400637
_root
2005-10-15 22:23
2005.11.06
Exit для другой части


3-1127742065
Dexter
2005-09-26 17:41
2005.11.06
Insert Into не пашет более 1 раза подряд


1-1129213892
Silver...
2005-10-13 18:31
2005.11.06
TOleContainer - Запустиь PowerPoint Presentation на показ


1-1129551717
Bagdat
2005-10-17 16:21
2005.11.06
Маска в StringGrid


9-1119467426
Germany
2005-06-22 23:10
2005.11.06
Отрожение в воде




   Наверх