Массив произвольных данных

Общие вопросы программирования, алгоритмы и т.п.

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

Массив произвольных данных

Сообщение Lucifer » 06.03.2019 17:44:24

Коллеги, приветствую!
Понадобилось тут сохранить в массиве разнородные данные - строки, дату, булевые значения. Объявил массив типа Variant. Пишется в него нормально, читается нормально все, кроме булевых значений. То есть, первоначально массив содержит все установленные булевые значения. Но при чтении из массива первое же прочитанное буллевое значения почему-то (!) сбрасывает остальные в False. И получается, что я могу правильно прочитать только одно значение!
Код: Выделить всё
var
  MyArray: Array[0..2] of Variant;
  MyArray[0] := 'String';
  MyArray[1] := True;
  MyArray[2] := True;
  //И вот при чтении MyArray[2] = False

Или так низзя?
Typhon 5.7, FPC 3.1.1, Win x64
Lucifer
постоялец
 
Сообщения: 121
Зарегистрирован: 05.01.2014 21:39:03
Откуда: Новороссийск

Re: Массив произвольных данных

Сообщение Vadim » 06.03.2019 18:14:40

Видимо Вы читаете какие-то левые данные...
Код: Выделить всё
Program p2;
Uses variants;
var
  MyArray: Array[0..2] of Variant;
  i: integer;

begin
  MyArray[0] := 'String';
  MyArray[1] := True;
  MyArray[2] := True;
 
  for i:=0 To 2 Do
  begin
    writeln(MyArray[i]);
  end;
end. 
Вложения
08.png
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Массив произвольных данных

Сообщение Lucifer » 06.03.2019 18:22:40

Да нет... Сейчас протестировал то же самое в классическом Lazarus 2.0 - нормально работает. А в тайфуне вот такой бред.
Lucifer
постоялец
 
Сообщения: 121
Зарегистрирован: 05.01.2014 21:39:03
Откуда: Новороссийск

Re: Массив произвольных данных

Сообщение Vadim » 06.03.2019 18:29:48

Lucifer
А если попробовать сменить транковый FPC (у Вас 3.1.1) на релизный (3.0.4)? Lazarus, если трезво рассудить, тут вроде как совершенно не при делах...
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Массив произвольных данных

Сообщение Lucifer » 06.03.2019 18:56:17

Vadim
Вероятно таки да. Но менять компилятор - это плохо. Проект не собирается тогда вообще. Я проверял. :-(
Ладно. Тогда завернем это все в json. Не хотелось, но придется.
Lucifer
постоялец
 
Сообщения: 121
Зарегистрирован: 05.01.2014 21:39:03
Откуда: Новороссийск

Re: Массив произвольных данных

Сообщение Лекс Айрин » 06.03.2019 19:43:13

Lucifer, если в лазаруса работает, а в тайфуне нет, то это явно косяк тайфуна. Что не удивительно, так как при сборке его сильно изменили. А почему это проект только под тайфун? Может какие-то проблемы с режимом компиляции?
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Массив произвольных данных

Сообщение sign » 07.03.2019 07:27:17

Я посидел немного на Тайфун и решил, ну его нафиг.
Вернулся на Лазарус.
sign
энтузиаст
 
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53

Re: Массив произвольных данных

Сообщение Снег Север » 07.03.2019 08:46:04

Лекс Айрин, это косяк использования транковых версий, на которых тайфун базируется. Все изменения там сводятся к замене названий и каталогов.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 3038
Зарегистрирован: 27.11.2007 16:14:47

Re: Массив произвольных данных

Сообщение Лекс Айрин » 07.03.2019 08:51:59

Снег Север, как видишь, не только. Данный косяк сложно объяснить переименованием каталогов и названий. Больше похоже на неправильную обработку упакованных булевых значений.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Массив произвольных данных

Сообщение Vadim » 07.03.2019 10:33:55

Лекс Айрин писал(а): как видишь, не только. Данный косяк сложно объяснить переименованием каталогов и названий. Больше похоже на неправильную обработку упакованных булевых значений.

Там транковый FPC. Возможно его с вариантными типами ещё не отладили, я просто про это ничего не знаю. И это явный косяк FPC, а не графической оболочки.
Выше я и ТС писали, что с релизным FPC косяков не наблюдается.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Массив произвольных данных

Сообщение alexs » 07.03.2019 11:14:06

Vadim
Всё нормально в транке FPC
Код: Выделить всё
alexs 1]$ fpc p2.pas
Free Pascal Compiler version 3.3.1 [2019/03/06] for x86_64
Copyright (c) 1993-2018 by Florian Klaempfl and others
Target OS: Linux for x86-64
Compiling p2.pas


@alexs 1]$ ./p2
String
True
True
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Массив произвольных данных

Сообщение Vadim » 07.03.2019 11:35:10

alexs
Ну тогда без исходника проблему не разберёшь...
Хотя, может быть это специфическая проблема версии 3.1.1... :-)
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Массив произвольных данных

Сообщение Lucifer » 07.03.2019 12:44:09

Лекс Айрин писал(а):Lucifer, если в лазаруса работает, а в тайфуне нет, то это явно косяк тайфуна. Что не удивительно, так как при сборке его сильно изменили. А почему это проект только под тайфун? Может какие-то проблемы с режимом компиляции?


Так исторически сложилось. Причем, проект не собирается вовсе на свежих версиях тайфуна. На классический Лазарус я его уже перенес. Но там другой затык, с подключениями к БД. Просто падает с AV и выловить не могу. Но это ладно, победимо.

З.Ы. Нашел знатный косяк в самом проекте. Так что, вопрос закрыт. Все правильно там работает и все правильно сохраняется/читается. Просто вчера уже башка не работала. А сегодня свежим глазом глянул - да вот же оно! Всем спасибо!
Lucifer
постоялец
 
Сообщения: 121
Зарегистрирован: 05.01.2014 21:39:03
Откуда: Новороссийск

Re: Массив произвольных данных

Сообщение Vadim » 07.03.2019 13:37:57

Lucifer писал(а):Нашел знатный косяк в самом проекте. Так что, вопрос закрыт. Все правильно там работает и все правильно сохраняется/читается. Просто вчера уже башка не работала.

Что ещё раз подтверждает: если проблема неразрешима - надо на неё временно плюнуть и забыть. Тогда всё решится само собой... ;-)
:-D
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Массив произвольных данных

Сообщение zoltanleo » 07.03.2019 17:15:06

Lucifer писал(а):Так исторически сложилось.

как-то уже проскакивало у тебя, что сидите на древнем тайфуне. А что мешает вовремя обновляться? Тайфун бесплатен, пере- и устанавливается из скриптов, напичкан компонентами под самую завязку (т.е. вряд ли даже что доустанавливать придется). Не понимаю.... :roll:
Аватара пользователя
zoltanleo
постоялец
 
Сообщения: 458
Зарегистрирован: 17.10.2013 10:55:01

След.

Вернуться в Общее

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

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

Рейтинг@Mail.ru