Показано с 1 по 6 из 6

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

  1. #1

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

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

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

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

  2. #2

    По умолчанию

    a:array [0..100] of byte;
    pa: pointer to byte;

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

    pa:=pa+i;

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

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

  3. #3

    По умолчанию

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

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

  4. #4

    По умолчанию

    BYTE_TO_DWORD(rcvIndex) * 201; (* длина строки +1 *) -- тут кроются грабли.

  5. #5

    По умолчанию

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

  6. #6

    По умолчанию

    тогда все нормально.

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •