Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

память [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


Наверх

Титульная страница Поиск, карта сайта Написать письмо