PDA

Просмотр полной версии : записать элемент массива через указатель



SuP
01.04.2010, 23:21
Есть указатель на массив строк. Как правильно записать присваивание строки i-тому элементу массива через этот указатель?
Что-то вроде

Pointer^[i] := 'строка';

не работает - меняется значение самого указателя.

Филоненко Владислав
01.04.2010, 23:30
a:array [0..100] of byte;
pa: pointer to byte;

pa:=ADR(a[0]); или ADR(a);

pa:=pa+i;

pa^:=28; //запись в элемент i.

Для строк надо применять функции копирования либо строк, либо массивов памяти.

SuP
01.04.2010, 23:45
Спасибо, туплю.. Сделал без функций копирования (хотя, по аналогии):

pStrA := pStrArr + BYTE_TO_DWORD(rcvIndex) * 201; (* длина строки +1 *)
pStrA^ := 'строка';

Филоненко Владислав
02.04.2010, 07:32
BYTE_TO_DWORD(rcvIndex) * 201; (* длина строки +1 *) -- тут кроются грабли.

SuP
02.04.2010, 09:23
какие? я так понимаю, что нужно иметь в виду, что если строки String(200), то в памяти они занимают 201 байт, и то, что указатели приращиваются только побайтно, а не в соответствии с тем типом, на который они указывают. и то, и другое я выполняю.

Филоненко Владислав
02.04.2010, 10:05
тогда все нормально.