Вниз
Скачать: 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.026 c
1-1128935230
leonidus
2005-10-10 13:07
2005.11.06
Почему не удается восстановить буфер обмена ?


1-1129533729
Чапаев
2005-10-17 11:22
2005.11.06
GetPropInfo(TStringList, Text )=nil. Почему?


3-1127796192
Сергей_1983
2005-09-27 08:43
2005.11.06
Группировка в dxDBGrid


1-1129210536
devmaster
2005-10-13 17:35
2005.11.06
MDi Form + DLL(MDI Child) ?


2-1129050240
Fasd
2005-10-11 21:04
2005.11.06
Как проверить наличие записи с помощью SQL-запроса?




   Наверх