Variant массивы[Решено]

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

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

Variant массивы[Решено]

Сообщение dionic » 11.03.2011 10:18:58

Народ подскажите кто сталкивался с такой проблемой, пытаюсь создать variant массив в lazarus, одним из элементов которого тоже является variant массив, пишу
Код: Выделить всё
lSend:= VarArrayOf([ VarArrayOf([False, 44]), 'ggg' ]);

, но в место массива получаю исключение :
EVariantTypeCastError
Could not convert variant of type (Array of variant) into type (Array of variant)

Уже разными способами перепробовал. А в delphi работает такой код.
Последний раз редактировалось dionic 12.03.2011 15:07:23, всего редактировалось 1 раз.
dionic
новенький
 
Сообщения: 90
Зарегистрирован: 17.06.2009 21:00:08

Re: Variant массивы

Сообщение Sergei I. Gorelkin » 11.03.2011 11:04:17

Что тут подскажешь... Исправлять RTL надо...
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1405
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: Variant массивы

Сообщение dionic » 11.03.2011 11:16:14

ааааа!!!!...


В variant массив даже не добавить просто динамический массив как элемент!!!
dionic
новенький
 
Сообщения: 90
Зарегистрирован: 17.06.2009 21:00:08

Re: Variant массивы

Сообщение Maxizar » 11.03.2011 11:21:40

Хм что то сегодня у всех какие то баги... Обновились чтоль все ?? :twisted:
У меня: Lazarus 0.9.29 SVN: 29368 (по свн это наверное декабрь 2010)
Делаю так:
Код: Выделить всё
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
  Variants;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;


var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
var VarArray:Variant;
begin

   VarArray:=VarArrayOf([ VarArrayOf([True, 44]), 'ggg' ]);

   if Boolean(VarArray[0][0]) then
     Caption:=IntToStr(Integer(VarArray[0][1]));

   Caption:=Caption+'  '+String(VarArray[1])
end;

end.

В Caption поучаем надпись: 44 ggg
И никаких предупреждений, и уж тем более вылетов программы. Удачи.
Maxizar
постоялец
 
Сообщения: 385
Зарегистрирован: 20.03.2010 19:48:14

Re: Variant массивы

Сообщение dionic » 11.03.2011 11:24:49

Видно у меня старая версия лазаруса, там это ещё не исправлено, щас попробую поставить новую может там всё нормально с этим...

Lazarus 0.9.28.2
FPC 2.2.4 i386-win32-win32/win64
dionic
новенький
 
Сообщения: 90
Зарегистрирован: 17.06.2009 21:00:08

Re: Variant массивы

Сообщение Maxizar » 11.03.2011 11:29:24

Да скорее всего... я качаю отсюда, лень собирать из SVN :)
Если обновление поможет, измените название темы на: Variant массивы [Решено], это помогает при поиске ответов на проблему подобной вашей.
Maxizar
постоялец
 
Сообщения: 385
Зарегистрирован: 20.03.2010 19:48:14

Re: Variant массивы

Сообщение Mr.Smart » 11.03.2011 12:12:27

Народ это к Lazarus вообще никакого отношения не имеет! Это проблема RTL FPC. Так что обсуждать версии Lazarus не имеет смысла!
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Variant массивы

Сообщение dionic » 11.03.2011 12:21:34

Ну вон у Maxizar же всё работает на Lazarus 0.9.29 SVN: 29368, или там другой FPC ставится вместе с ним?
dionic
новенький
 
Сообщения: 90
Зарегистрирован: 17.06.2009 21:00:08

Re: Variant массивы

Сообщение Maxizar » 11.03.2011 12:22:36

Mr.Smart - Вы правы. Но dionic использует Lazarus 0.9.28.2 а тот в свою очередь FPC 2.2.4, Я же Lazarus 0.9.29 который компилит при помощи FPC 2.4.2.. Я не думал, что dionic использует такую старую версию, думал наоборот, типа FPC 2.5.1 и по этому выражение: "Обновились чтоль все ??" - Был в этом ключе мол у меня на "Старом" все работает а тут нет... Но оказалось все немного подругому :twisted:

dionic писал(а):или там другой FPC ставится вместе с ним?

Да другой. читай пост... Некоторый юзают и Lazarus и FPC собирая и тот и другой из SVN. НО это дело вкуса. Я лично качаю дневные сборки
Для своей Win XP, я качаю вот этот: Lazarus-0.9.29-xxxx-fpc-2.4.2-xxxxx-win32.exe
Maxizar
постоялец
 
Сообщения: 385
Зарегистрирован: 20.03.2010 19:48:14


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 21

Рейтинг@Mail.ru