Leency wrote:
Есть код, но он не работает как надо.
Code:
struct line_element
{
char type;
char header[256];
int size;
}
dword db;
dword GetCurrentElement(int el_N)
{
return sizeof(line_element)*el_N + #db;
}
void main()
{
db = free(db);
db = malloc( count * sizeof(line_element) );
for (i=0; i < 10; i++)
{
EBX = GetCurrentElement(i);
EBX.line_element.size = i; //мне кажется тут мы забиваем значение в переменную, а не "по адресу" в указателе
}
for (i=0; i < 10; i++)
{
EBX = GetCurrentElement(i);
debugi(EBX.line_element.size); // вывод сплошные нули, а не 0 1 2 3 4...
}
}
На чём писанно?
Если, даже
dword GetCurrentElement(int el_N) - возвращает элемент по номеру(в массиве), - то зачем нужно получать
в возврате размер данного элмента + адрес его (массива) базы (#db):
return sizeof(line_element)*el_N + #db;
Тебе нужен указатель на массив элементов - GetCurrentElement(line_element *el_N),
это во-первых, а во-вторых, - у тебя функция возвращает элементы {char type; char header[2]}, а не указатель на:
line_element *Имя_нечто[Некого_размера].
Если не запямятовал.