PDA

Просмотр полной версии : Функция, которая принимает буфер памяти( Непойму условие%( )


WON
08.03.2009, 23:34
Задача:
Здесь была задача...
Задачу решать не надо, только обьясните пожалуйста условие и если будут попутные вопросы ответе.

ProTeuS
08.03.2009, 23:48
4ето типа такого имхо
...
type
TLol = record
field1: byte;
field2: byte;
field3: byte;
field4: byte;
field5: byte;
field6: byte;
end;

function myfunc(struct: ^TLol): byte;
begin
result := struct.field6;
end;

var
lol : ^TLol;
rez: byte;
begin
rez := myfunc(lol);
writeln('rezult = ', rez);
end;

WON
09.03.2009, 22:09
Как на С/С++ изменить значение адреса. Конкретнее на примере:
получаю адресс 0x0013FF78 и мне надо изменить а точнее прибавить к текущему значению 4 байта.. как это зделать?

St0nX
09.03.2009, 22:21
Если я все правильно понял то тебе нудно просто просто прибавить к текущему адресу еще 4 байта и все
mov eax,0013FF78h
add eax,4h
на сях как то так.
char *a;
a = (char *)(0x0013FF78+0x4);

WON
09.03.2009, 23:00
mov eax,0013FF78h
add eax,4hЕсли начальный адрес храниться в переменной, а полученный адрес надо занести в указатель типа long то как будет этот код выглядить?

char *a;
a = (char *)(0x0013FF78+0x4);
void f(void *v)
{
long *p= (v+0x5);
cout<<v<<" + 5 = "<<p<<endl;
};а так оно не хочет работать :(... Говорит что неизвестен размер void *.

0x0c0de
10.03.2009, 07:08
Имхо, вам сюда надо было
https://forum.antichat.ru/thread40894.html

а вообще


long *p= (long *)((char *)v+0x5);

WON
10.03.2009, 15:04
Спасибо... Тему можно закрывать...