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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.02.2011, 01:56   #1
CraZZZy-GameRRR
Пользователь
 
Регистрация: 15.04.2010
Сообщений: 98
По умолчанию Ошибка в программе

Помогите найти здесь ошибку:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, sLabel, sButton, sEdit, sSpinEdit, Tlhelp32;

type
  TForm1 = class(TForm)
    DecAddr: TsDecimalSpinEdit;
    sButton1: TsButton;
    sLabel1: TsLabel;
    sLabel2: TsLabel;
    Inc: TsDecimalSpinEdit;
    Bytes: TsDecimalSpinEdit;
    sLabel3: TsLabel;
    sLabel4: TsLabel;
    sLabel5: TsLabel;
    SignInt: TsEdit;
    UnsigInt: TsEdit;
    Float: TsEdit;
    sLabel6: TsLabel;
    HexAddr: TsEdit;
    sLabel7: TsLabel;
    Hex: TsEdit;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormShow(Sender: TObject);
    procedure DecAddrChange(Sender: TObject);
    procedure sButton1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Process: Cardinal;

implementation

{$R *.dfm}

function GetPID(name: string): LongInt;
var
hSnapshot: THandle;
lppe: TProcessEntry32;
begin
Result := 0;
hSnapshot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if hSnapshot = 0 then
  exit;
lppe.dwSize := SizeOf(TProcessEntry32);
if Process32First(hSnapshot,lppe) then
  repeat
    if name = ExtractFileName(lppe.szExeFile) then
    begin
      Result := lppe.th32ProcessID;
      break;
    end;
  until not Process32Next(hSnapshot,lppe);
CloseHandle(hSnapshot);
end;

procedure TForm1.DecAddrChange(Sender: TObject);
type
  TBuffer = packed array [0..7] of byte;
  PBuffer = ^TBuffer;

var
  Buffer: PBuffer;
  L: Byte;
  Addr, BytesRead: Cardinal;
  SigInt: Integer;
  UnsigInt: Cardinal;
  Float: Single;
  I: Byte;

begin
  Form1.HexAddr.Text := '0x' + IntToHex(Trunc(Form1.DecAddr.Value), 8);
  L := Trunc(Form1.Bytes.Value);
  Addr := Form1.DecAddr.Value
  GetMem(Buffer, L); // Вот здесь происходит ошибка
  ReadProcessMemory(Process, Ptr(Addr), Buffer, L, BytesRead);
  Form1.Hex.Clear;
  for I := 0 to L - 1 do
    Form1.Hex.Text := Form1.Hex.Text + IntToStr(Buffer[I]);

  FreeMem(Buffer);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  CloseHandle(Process);
end;

procedure TForm1.FormShow(Sender: TObject);
begin
  Process := OpenProcess(PROCESS_ALL_ACCESS, False, GetPID('gta_sa.exe'));
  if Process = 0 then
      Close;
end;

procedure TForm1.sButton1Click(Sender: TObject);
begin
  Form1.DecAddr.Value := Form1.DecAddr.Value + Form1.Inc.Value;
end;

end.
При компиляции Delphi ругается - [Pascal Error] Unit1.pas(84): E2010 Incompatible types: 'Cardinal' and 'Extended'
Мозг сломал, но так и не понял, чего он хочет.
CraZZZy-GameRRR вне форума Ответить с цитированием
Старый 14.02.2011, 02:11   #2
asmodey1
Подтвердите свой е-майл
 
Регистрация: 19.12.2010
Сообщений: 808
По умолчанию

Полагаю, что на строку раньше :
Код:
Addr := Form1.DecAddr.Value
- Нет точки с запятой.
- Непонятен тип TsDecimalSpinEdit.Value (предпочитаю по возможности не использовать сторонние компоненты).
Цитата:
Мозг сломал, но так и не понял, чего он хочет.
Аглицкий учить надо ! Черным по белому - Несовместимые типы: 'Cardinal' и 'Extended'

Последний раз редактировалось asmodey1; 14.02.2011 в 02:30.
asmodey1 вне форума Ответить с цитированием
Старый 14.02.2011, 02:22   #3
CraZZZy-GameRRR
Пользователь
 
Регистрация: 15.04.2010
Сообщений: 98
По умолчанию

Спасибо, теперь понятно в чём ошибка. Не пойму, почему сам не понял.
CraZZZy-GameRRR вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка в программе. v1le Помощь студентам 3 26.10.2010 17:00
Ошибка в программе w6120w Общие вопросы C/C++ 3 04.10.2010 19:37
Ошибка в программе Vladislav514 Софт 0 13.07.2010 15:16
Ошибка в программе на С++ Vikelf Помощь студентам 3 15.05.2009 15:05