Просмотр полной версии : записать элемент массива через указатель
Есть указатель на массив строк. Как правильно записать присваивание строки 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.
Для строк надо применять функции копирования либо строк, либо массивов памяти.
Спасибо, туплю.. Сделал без функций копирования (хотя, по аналогии):
pStrA := pStrArr + BYTE_TO_DWORD(rcvIndex) * 201; (* длина строки +1 *)
pStrA^ := 'строка';
Филоненко Владислав
02.04.2010, 07:32
BYTE_TO_DWORD(rcvIndex) * 201; (* длина строки +1 *) -- тут кроются грабли.
какие? я так понимаю, что нужно иметь в виду, что если строки String(200), то в памяти они занимают 201 байт, и то, что указатели приращиваются только побайтно, а не в соответствии с тем типом, на который они указывают. и то, и другое я выполняю.
Филоненко Владислав
02.04.2010, 10:05
тогда все нормально.
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot