Страница 1 из 1
Variant массивы[Решено]
Добавлено: 11.03.2011 09:18:58
dionic
Народ подскажите кто сталкивался с такой проблемой, пытаюсь создать 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 работает такой код.
Re: Variant массивы
Добавлено: 11.03.2011 10:04:17
Sergei I. Gorelkin
Что тут подскажешь... Исправлять RTL надо...
Re: Variant массивы
Добавлено: 11.03.2011 10:16:14
dionic
ааааа!!!!...
В variant массив даже не добавить просто динамический массив как элемент!!!
Re: Variant массивы
Добавлено: 11.03.2011 10:21:40
Maxizar
Хм что то сегодня у всех какие то баги...
Обновились чтоль все ??
У меня: 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
И никаких предупреждений, и уж тем более вылетов программы. Удачи.
Re: Variant массивы
Добавлено: 11.03.2011 10:24:49
dionic
Видно у меня старая версия лазаруса, там это ещё не исправлено, щас попробую поставить новую может там всё нормально с этим...
Lazarus 0.9.28.2
FPC 2.2.4 i386-win32-win32/win64
Re: Variant массивы
Добавлено: 11.03.2011 10:29:24
Maxizar
Да скорее всего...
я качаю отсюда, лень собирать из SVN
Если обновление поможет, измените название темы на:
Variant массивы [Решено], это помогает при поиске ответов на проблему подобной вашей.
Re: Variant массивы
Добавлено: 11.03.2011 11:12:27
Mr.Smart
Народ это к Lazarus вообще никакого отношения не имеет! Это проблема RTL FPC. Так что обсуждать версии Lazarus не имеет смысла!
Re: Variant массивы
Добавлено: 11.03.2011 11:21:34
dionic
Ну вон у Maxizar же всё работает на Lazarus 0.9.29 SVN: 29368, или там другой FPC ставится вместе с ним?
Re: Variant массивы
Добавлено: 11.03.2011 11:22:36
Maxizar
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 и по этому выражение: "Обновились чтоль все ??" - Был в этом ключе мол у меня на "Старом" все работает а тут нет... Но оказалось все немного подругому

dionic писал(а):или там другой FPC ставится вместе с ним?
Да другой. читай пост... Некоторый юзают и Lazarus и FPC собирая и тот и другой из SVN. НО это дело вкуса. Я лично качаю
дневные сборки Для своей Win XP, я качаю вот этот: Lazarus-0.9.29-xxxx-fpc-2.4.2-xxxxx-win32.exe