Страница 1 из 2

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

СообщениеДобавлено: 06.03.2019 17:44:24
Lucifer
Коллеги, приветствую!
Понадобилось тут сохранить в массиве разнородные данные - строки, дату, булевые значения. Объявил массив типа 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

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

СообщениеДобавлено: 06.03.2019 18:14:40
Vadim
Видимо Вы читаете какие-то левые данные...
Код: Выделить всё
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. 

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

СообщениеДобавлено: 06.03.2019 18:22:40
Lucifer
Да нет... Сейчас протестировал то же самое в классическом Lazarus 2.0 - нормально работает. А в тайфуне вот такой бред.

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

СообщениеДобавлено: 06.03.2019 18:29:48
Vadim
Lucifer
А если попробовать сменить транковый FPC (у Вас 3.1.1) на релизный (3.0.4)? Lazarus, если трезво рассудить, тут вроде как совершенно не при делах...

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

СообщениеДобавлено: 06.03.2019 18:56:17
Lucifer
Vadim
Вероятно таки да. Но менять компилятор - это плохо. Проект не собирается тогда вообще. Я проверял. :-(
Ладно. Тогда завернем это все в json. Не хотелось, но придется.

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

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

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

СообщениеДобавлено: 07.03.2019 07:27:17
sign
Я посидел немного на Тайфун и решил, ну его нафиг.
Вернулся на Лазарус.

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

СообщениеДобавлено: 07.03.2019 08:46:04
Снег Север
Лекс Айрин, это косяк использования транковых версий, на которых тайфун базируется. Все изменения там сводятся к замене названий и каталогов.

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

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

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

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

Там транковый FPC. Возможно его с вариантными типами ещё не отладили, я просто про это ничего не знаю. И это явный косяк FPC, а не графической оболочки.
Выше я и ТС писали, что с релизным FPC косяков не наблюдается.

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

СообщениеДобавлено: 07.03.2019 11:14:06
alexs
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

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

СообщениеДобавлено: 07.03.2019 11:35:10
Vadim
alexs
Ну тогда без исходника проблему не разберёшь...
Хотя, может быть это специфическая проблема версии 3.1.1... :-)

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

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


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

З.Ы. Нашел знатный косяк в самом проекте. Так что, вопрос закрыт. Все правильно там работает и все правильно сохраняется/читается. Просто вчера уже башка не работала. А сегодня свежим глазом глянул - да вот же оно! Всем спасибо!

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

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

Что ещё раз подтверждает: если проблема неразрешима - надо на неё временно плюнуть и забыть. Тогда всё решится само собой... ;-)
:-D

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

СообщениеДобавлено: 07.03.2019 17:15:06
zoltanleo
Lucifer писал(а):Так исторически сложилось.

как-то уже проскакивало у тебя, что сидите на древнем тайфуне. А что мешает вовремя обновляться? Тайфун бесплатен, пере- и устанавливается из скриптов, напичкан компонентами под самую завязку (т.е. вряд ли даже что доустанавливать придется). Не понимаю.... :roll: