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

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

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

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

Сообщение Andreich » 03.09.2008 16:40:13

Имеется программа на 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 такого не было!
Andreich
постоялец
 
Сообщения: 268
Зарегистрирован: 17.04.2008 12:33:43

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

Сообщение Attid » 03.09.2008 17:15:44

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

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

Сообщение wavebvg » 03.09.2008 19:06:35

Если нечитается из массива после выполнение процедуры - стоит попытаться прописать после объявления процедуры
Код: Выделить всё
stdcall;
wavebvg
постоялец
 
Сообщения: 354
Зарегистрирован: 28.02.2008 04:57:35

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

Сообщение Andreich » 03.09.2008 20:59:09

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>, ... и дальше в том же духе!
Что это вообще такое?
Andreich
постоялец
 
Сообщения: 268
Зарегистрирован: 17.04.2008 12:33:43

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

Сообщение SAK » 04.09.2008 00:02:35

repeats 12 times - "повторяется 12 раз"
SAK
постоялец
 
Сообщения: 158
Зарегистрирован: 18.02.2006 00:45:14
Откуда: Тим

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

Сообщение Andreich » 04.09.2008 00:40:26

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


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

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

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

Сообщение Andreich » 10.09.2008 12:35:19

Так, похоже что динамические массивы здесь вовсе ни при чем,... Это проблема gdb .
Смотрим http://freepascal.ru/forum/viewtopic.php?f=5&t=3648
Andreich
постоялец
 
Сообщения: 268
Зарегистрирован: 17.04.2008 12:33:43

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

Сообщение alexs » 10.09.2008 13:36:27

Он ещё может вместо значения массива показывать его указатель. Сталкивался с ним. Т.е. переменную массива интерпретировать просто как указатель на массив.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 45

Рейтинг@Mail.ru