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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.08.2010, 13:19   #1
Kolik317
Пользователь
 
Регистрация: 14.08.2009
Сообщений: 64
По умолчанию asm код процедуры D2009

Здравстуйте,
прочитал статью, решил повторить 1 в 1, и не получается=) на Delphi 2009.

вот на этой строке
Код:
 ptrAddr := @CheckTrial;
после @CheckTrial
ругается Variable required. Что делать?
Kolik317 вне форума Ответить с цитированием
Старый 27.08.2010, 13:29   #2
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Ну, а CheckTrial-то у вас объявлена? Где?
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 27.08.2010, 13:30   #3
Kolik317
Пользователь
 
Регистрация: 14.08.2009
Сообщений: 64
По умолчанию

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure CheckTrial();
    procedure EndCheckTrial;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
 ptrAddr: Pointer; {Адрес процедуры CheckTrial}
 aByte: Byte; {Байт процедуры}
 dwOldProtect: DWORD;
begin
 ptrAddr := @CheckTrial;
 VirtualProtect(@CheckTrial, 4096, PAGE_READWRITE, @dwOldProtect);
 while ptrAddr <> @EndCheckTrial do
 begin
  Byte(ptrAddr^) := Byte(ptrAddr^) xor $25;
  aByte := Byte(ptrAddr^);
  Memo1.Lines.Add('0' + IntToHex(aByte, 2) + 'h');
  inc(Integer(ptrAddr));
 end;

end;

procedure TForm1.CheckTrial;
begin
 ShowMessage('Trial period has expired.');
end;

procedure TForm1.EndCheckTrial;
begin
caption:='';
end;

end.
Чет с синтаксисом не так? или объявил не там?

Последний раз редактировалось Kolik317; 27.08.2010 в 13:48.
Kolik317 вне форума Ответить с цитированием
Старый 27.08.2010, 14:52   #4
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Процедура <> метод.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 27.08.2010, 19:21   #5
Kolik317
Пользователь
 
Регистрация: 14.08.2009
Сообщений: 64
По умолчанию

тоесть мне надо сделать из процедуры метод? тоесть добавть объект? или класс? сори если я дико нублю)
Kolik317 вне форума Ответить с цитированием
Старый 27.08.2010, 19:35   #6
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Код:
 TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure CheckTrial();
    procedure EndCheckTrial;
Из этого видно, что EdnCheckTrial, CheckTrial сейчас методы класса TForm1. Вам надо сделать типа
Код:
procedure CheckTrial....
т.е. не объявлять в TForm1 = class..
BOBAH13 вне форума Ответить с цитированием
Старый 27.08.2010, 20:03   #7
Kolik317
Пользователь
 
Регистрация: 14.08.2009
Сообщений: 64
По умолчанию

аааа спасибо, всё теперь тотально допёр)))
вощем так надо
Код:
type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
    procedure CheckTrial();
    procedure EndCheckTrial;
Kolik317 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переделать код с процедуры в классы на С++ Tusichka Помощь студентам 0 30.05.2010 19:51
ASM. код werser Помощь студентам 0 25.05.2010 23:55
Настройки D2009 Черничный Общие вопросы Delphi 1 20.02.2010 18:37
Indy (TIdHTTP) в D6 и D2009 Legion2003 Работа с сетью в Delphi 7 07.11.2009 18:26
[Asm] Состыковать код с интерфейсом q1q1 Помощь студентам 4 09.06.2009 18:40