![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
память [D6, WinXP]
Витёк © (2005-06-28 04:33:00)Подскажите пожалуйста, как изменить значение числа, зная его адресс в памяти! Например изменить память по адресу 00BA1796.
Дмитрий Д. (2005-06-28 09:00:00) [1]Digitman, да-да-да! Можно начинать писать Loader для шароварной проги. Шутка :)
default (2005-06-28 09:00:00) [2]это скорее попытаться изменить:)
Digitman (2005-06-28 08:55:00) [3]
> Дмитрий Д. (28.06.05 08:51) [8]
type TMyArray = array[0..9] of char;
var buf: ^TMyArray;
...
buf := Pointer($00BA1796);
Дмитрий Д. (2005-06-28 08:51:00) [4]Сорри 20-я строка это: buf: ^array[0..9] of char;
Юрий Зотов (2005-06-28 08:50:00) [5]> Дмитрий Д.
> насколько просто это было бы сделать в Сях!
И действительно - ну что может быть сложнее [2]?
> По логике:
> var buf: array[0..9] of char;
> @buf := Pointer($00BA1796);
Выделение памяти под buf мы сначала поручили компилятору, а потом вдруг решили назначить ее адрес сами - где же тут логика? Разве в сях можно сначала объявить статическую переменную, а потом взять - да и изменить ее адрес вручную?
Дмитрий Д. (2005-06-28 08:50:00) [6]Ошибку понял. Однако [4] в D6 выдает: [Error] Unit1.pas(20): Identifier expected but 'ARRAY' found
20-я строка это как раз и есть var buf: array[0..9] of char;
Хотя уже не суть важно, смысл понятен.
evvcom (2005-06-28 08:43:00) [7]
> По логике:
>
> var buf: array[0..9] of char;
По логике у тебя переменная buf жестко компилятором привязана к адресу памяти, по которому лежат 10 символов. А тебе по логике нужен указатель на данные, т.е. см. [4].
Digitman (2005-06-28 08:32:00) [8]
> просто это было бы сделать в Сях
в ОР не менее просто
> По логике:
>
> var buf: array[0..9] of char;
> ...
> @buf := Pointer($00BA1796);
>
> Но это, определенно, не правильно и не работает
конечно неправильно.
var buf: ^array[0..9] of char; // char *buf[10]
...
buf := Pointer($00BA1796); //buf = (char*)0x00ba1796
Дмитрий Д. (2005-06-28 08:20:00) [9]Я вот думаю насколько просто это было бы сделать в Сях!
Кстати, а в делфи можно переменной присвоить произвольный адрес в памяти без использования каких-либо функций, т.е. средствами языка. Я поигрался с указателями, но что-то не прокатило :-)
По логике:
var buf: array[0..9] of char;
...
@buf := Pointer($00BA1796);
Но это, определенно, не правильно и не работает.
Просьба сильно не плеваться, т.к. в делфи я копаюсь для души, а моя профессиональная деятельность не имеет отношения к системному программированию.
Digitman (2005-06-28 08:15:00) [10]PInteger($BA1796)^ := ..
Дмитрий Д. (2005-06-28 06:38:00) [11]http://delphiworld.narod.ru/base/share_dll_mem.html