Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 25463
Рейтинг: 2071
#286: 2012-01-05 18:26:04 ЛС | профиль | цитата
1nd1g0 писал(а):
Так он там так же, "сложно" и реализован

Он не там реализован, а в Share. Тебе же доступен метод CreateArray без объявления. Нафиг его еще раз объявлять
карма: 19

0
Ответов: 3889
Рейтинг: 362
#287: 2012-01-05 18:31:58 ЛС | профиль | цитата
nesco, я его и не предлагал объявлять, я же прямо пишу :
1nd1g0 писал(а):
Инициализация структуры и получение указателя на неё идёт через лежащую в Share.pas CreateArray, принимающую ссылки на процедуры и выдающую на выходе PArray


И дальше цитирую прототип из Share, чтобы человеку было понятно, какие процедуры реализовывать и в каком порядке передавать аргументы.
карма: 1

0
Разработчик
Ответов: 25463
Рейтинг: 2071
#288: 2012-01-05 18:51:10 ЛС | профиль | цитата
1nd1g0 писал(а):
я же прямо пишу

Ой! Звеняйте, батьку, прилагаемый трактат на тему не заметил
карма: 19

0
Ответов: 1841
Рейтинг: 362
#289: 2012-11-03 15:17:49 ЛС | профиль | цитата
Пытался прикрутить свою dll, но после объявления второй процедуры, компилятор отказывается компилировать аргументируя этим:
Error: Unsatisfied forward or external declaration: 'ThiInlineCode_288DD20.doGetProcessPID'
Хотя если убрать одну из процедур, с оставшейся процедурой компиляция проходит успешно
С чем это может быть связано?
iC

Add(InlineCode,12020246,70,112)
{
WorkPoints=#19:doEnableDebugPrivNT|15:doGetProcessPID|
EventPoints=#19:onEnableDebugPrivNT|15:onGetProcessPID|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses Kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|36: onEnableDebugPrivNT: THI_Event;|32: onGetProcessPID: THI_Event;|5: |59: Procedure doEnableDebugPrivNT(var dt:TData; idx:Word);|55: Procedure doGetProcessPID(var dt:TData; idx:Word);|7: end;|0:|87: //================Устанавливаем нашему процессу привелегии отладчика================ |93: function EnableDebugPrivNT(aPrivilegeName: string): integer; stdcall; external 'crack.dll';|86: function GH_GetProcessPID(ProcName: string): integer; stdcall; external 'crack.dll';|0:|14:implementation|0:|84://================Устанавливаем нашему процессу привелегии отладчика================|42:Procedure THiAsmClass.doEnableDebugPrivNT;|22: var Result: integer;|7: begin|52: Result := EnableDebugPrivNT('SeDebugPrivilege');|45: _hi_OnEvent(onEnableDebugPrivNT, Result);|6: end;|4:end.|0:|38:Procedure THiAsmClass.doGetProcessPID;|22: var Result: integer;|7: begin|43: Result := GH_GetProcessPID('aion.bin');|41: _hi_OnEvent(onGetProcessPID, Result);|6: end;|4:end.|
}
Код

unit HiAsmUnit;

interface

uses Kol,Share,Debug;

type
THiAsmClass = class(TDebug)
private

public
onEnableDebugPrivNT: THI_Event;
onGetProcessPID: THI_Event;

Procedure doEnableDebugPrivNT(var dt:TData; idx:Word);
Procedure doGetProcessPID(var dt:TData; idx:Word);
end;

//================Устанавливаем нашему процессу привелегии отладчика================
function EnableDebugPrivNT(aPrivilegeName: string): integer; stdcall; external 'crack.dll';
function GH_GetProcessPID(ProcName: string): integer; stdcall; external 'crack.dll';

implementation

//================Устанавливаем нашему процессу привелегии отладчика================
Procedure THiAsmClass.doEnableDebugPrivNT;
var Result: integer;
begin
Result := EnableDebugPrivNT('SeDebugPrivilege');
_hi_OnEvent(onEnableDebugPrivNT, Result);
end;
end.

Procedure THiAsmClass.doGetProcessPID;
var Result: integer;
begin
Result := GH_GetProcessPID('aion.bin');
_hi_OnEvent(onGetProcessPID, Result);
end;
end.
//Компилятор - Delphi 4
карма: 1
0
Разработчик
Ответов: 25463
Рейтинг: 2071
#290: 2012-11-03 15:47:27 ЛС | профиль | цитата
Убери "end." после завершения doEnableDebugPrivNT. Ты же закрываешь дальнейший код тем самым. Вот она тебе и пишет, что не может найти объявленную функцию
Вот здесь


#pas
Procedure THiAsmClass.doEnableDebugPrivNT;
var Result: integer;
begin
Result := EnableDebugPrivNT('SeDebugPrivilege');
_hi_OnEvent(onEnableDebugPrivNT, Result);
end;
// end. -- это не нужно делать

карма: 19

1
Голосовали:CriDos
Ответов: 1841
Рейтинг: 362
#291: 2012-11-03 15:52:28 ЛС | профиль | цитата
nesco, спасибо!
карма: 1
0
Ответов: 25
Рейтинг: 0
#292: 2013-02-05 19:05:59 ЛС | профиль | цитата
приведите пожалуйста примеры использования InlineCode и вставка ассемблера
что нибуть простое типо реализация сложения ,цикла, и условного If_else через асм и InlineCode

карма: 0

0
Ответов: 16489
Рейтинг: 1210
#293: 2013-02-05 19:12:34 ЛС | профиль | цитата
В гугле набери "ASM в DELPHI" (примерно 3 500 000 ответов)
карма: 22
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 4398
Рейтинг: 472
#294: 2013-02-05 19:32:40 ЛС | профиль | цитата
Tad, к сожелению ещё есть требование к версии компилятора. (это тоже надо учитывать, некоторые конструкции не доступны) хотя простых конструкций это не должно касаться.
карма: 4

0
Ответов: 16489
Рейтинг: 1210
#295: 2013-02-05 19:37:50 ЛС | профиль | цитата
andrestudio писал(а):
к сожелению ещё есть требование к версии компилятора
Подробнее, если можно.
карма: 22
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 4398
Рейтинг: 472
#296: 2013-02-05 19:41:50 ЛС | профиль | цитата
гугл

карма: 4

0
Ответов: 16489
Рейтинг: 1210
#297: 2013-02-05 19:52:55 ЛС | профиль | цитата
молодец.
использование ассемблера оправдано в двух случаях:
1. Обработка большого количества данных.
2. В высокоскоростных подпрограммах работы с дисплеем.
что в HiAsm-е никому ни на не нужно.


карма: 22
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 25
Рейтинг: 0
#298: 2013-02-05 19:53:35 ЛС | профиль | цитата
Tad писал(а):
В гугле набери "ASM в DELPHI" (примерно 3 500 000 ответов)


вот и спрашиваю потому как пример для InlineCode нужен...

Tad писал(а):
использование ассемблера оправдано в двух случаях:
1. Обработка большого количества данных.
2. В высокоскоростных подпрограммах работы с дисплеем.
что в HiAsm-е никому ни на не нужно


я сделал простую схемку на пакете Fasm и сравнил ее работу в пакете windows
схемка цикл с подсчетом длины ... разница в скорости в разы не в пользу пакета windows
также большой плюс вроде при ветвлениях... if
но если использовать компоненты типа соединения строк... то выигрыша в скорости нет...

карма: 0

0
Ответов: 3939
Рейтинг: 622
#299: 2013-02-05 20:06:48 ЛС | профиль | цитата
Разница в скорости из-за различий в концепции пакетов. Напиши тестовую задачу на Delphi (не ASM) в IC и сравни с той же задачей в FASM - уверен, большой разницы не заметишь.
карма: 19

0
Разработчик
Ответов: 25463
Рейтинг: 2071
#300: 2013-02-05 20:26:08 ЛС | профиль | цитата
seagai писал(а):
не в пользу пакета windows

Самый большой тормоз в этом пакете -- это преобразование типов
карма: 19

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)