Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Функция, которая принимает буфер памяти( Непойму условие%( ) (https://forum.antichat.xyz/showthread.php?t=109984)

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

Цитата:

Сообщение от St0nX
Код:

mov eax,0013FF78h
add eax,4h


Если начальный адрес храниться в переменной, а полученный адрес надо занести в указатель типа long то как будет этот код выглядить?

Цитата:

Сообщение от St0nX
Код:

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

Спасибо... Тему можно закрывать...


Время: 13:00