Динамические массивы в Lazarus. Как правильно?!

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
Andreich
постоялец
Сообщения: 268
Зарегистрирован: 17.04.2008 12:33:43

Динамические массивы в Lazarus. Как правильно?!

Сообщение Andreich »

Имеется программа на Lazarus, в которой процедуре в качестве параметра передается динамический массив.
Приблизительно так:

Код: Выделить всё

type StrArray1D = array of string;

procedure ProcedureName(var masPersonsID : StrArray1D);
begin
  ...
  SetLength(masPersonsID, persons_count);
  ...
  for k:=0 to 9 do
  masPersonsID[k]:='string';
...
end;


Так вот, когда потом пробуешь читать данные из этого массива, то ничего ни читается! :(
В режиме отладки вообще показывает содержимое массива в следующем виде:

masPersonsID = 0x839f9b0 # 180'='#183#0#0#0#0

Что бы это могло значить? В Delphi такого не было!
Аватара пользователя
Attid
долгожитель
Сообщения: 2589
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E
Контактная информация:

Сообщение Attid »

версия фпц и лазаря ?
wavebvg
постоялец
Сообщения: 355
Зарегистрирован: 28.02.2008 03:57:35

Сообщение wavebvg »

Если нечитается из массива после выполнение процедуры - стоит попытаться прописать после объявления процедуры

Код: Выделить всё

stdcall;
Andreich
постоялец
Сообщения: 268
Зарегистрирован: 17.04.2008 12:33:43

Сообщение Andreich »

Attid писал:
версия фпц и лазаря ?


Lazarus 0.9.25 beta + FPC 2.2.2 ( Linux: Ubuntu 8.04.1 )

Добавлено спустя 2 часа 4 минуты 45 секунд:
Так,.. с тем что данные из массива не читались - это был мой косяк! Сори. :?
А вот как были в режиме отладки странности с отображением содержимого массива, так они и остались. Причем сразу внимания не обратил, там есть какое-то странное слово <Repeats X times> :

masPersonsID = 0x839fbb0 #244'5'#183#0 <repeats 12 times>, #200'#<'#183#0 <repeats 12 times>, ... и дальше в том же духе!
Что это вообще такое?
SAK
постоялец
Сообщения: 158
Зарегистрирован: 17.02.2006 23:45:14
Откуда: Тим
Контактная информация:

Сообщение SAK »

repeats 12 times - "повторяется 12 раз"
Andreich
постоялец
Сообщения: 268
Зарегистрирован: 17.04.2008 12:33:43

Сообщение Andreich »

SAK писал(а):repeats 12 times - "повторяется 12 раз"


Да, это понятно... :) Меня больше интересуют решетки и цифры!

Но почему такая абра-кадабра наблюдается только на динамических массивах?
Andreich
постоялец
Сообщения: 268
Зарегистрирован: 17.04.2008 12:33:43

Сообщение Andreich »

Так, похоже что динамические массивы здесь вовсе ни при чем,... Это проблема gdb .
Смотрим http://freepascal.ru/forum/viewtopic.php?f=5&t=3648
Аватара пользователя
alexs
долгожитель
Сообщения: 4069
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

Он ещё может вместо значения массива показывать его указатель. Сталкивался с ним. Т.е. переменную массива интерпретировать просто как указатель на массив.
Ответить