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

Размер имеет значение

Добавлено: 20 Июнь 2011, 17:19
Игорь Столяров
Привет всем !

Что-то я опять заблудился в "трех соснах" ... :)
Подскажите пожалуйста, можно ли узнать размер (не длину !) текущего поля под ANY ?
Пример:

GR Group
F1 Long
F2 String(30)
F3 Real
F4 Decimal(15,0)
end

F_ANY ANY

Code

Loop i# = 1 to 4
F_ANY &= What(GR,i#)
! Какой размер сейчас имеет поле в ANY ?
! Size(F_ANY) - возвращает размер самого ANY, т.е. просто длину указателя в 4 byte ...
end

Или эта задача в общем случае вообще не имеет решения ?
Заранее спасибо !

Re: Размер имеет значение

Добавлено: 22 Июнь 2011, 10:56
Admin
Игорь Столяров писал(а):Подскажите пожалуйста, можно ли узнать размер (не длину !) текущего поля под ANY ?
Думаю только недокументированными функциями клариона. Таких не знаю.
Наверное проще переписать твою приладу что бы при получении из группы поля сразу рядом сохраняла размер...

Re: Размер имеет значение

Добавлено: 22 Июнь 2011, 11:18
Игорь Столяров
Ха ! Это понятно ... Здесь именно фишка в том, что бы написать обработку группы независимо от ее структуры - например объявить динамический файл и записать в него данные. А для этого нужно знать размерность полей группы ... Замое забавное, что я вроде бы технологических проблем здесь не вижу. ANY - указатель, в момент присвоения данных, резервируется область памяти под вполне определенный и известный тип данных ... А вот почему нельзя получить текущие параметры инициализации переменной ANY - непонятно ... :(

Re: Размер имеет значение

Добавлено: 24 Июнь 2011, 12:48
БАИ
не, any же не указатель, а обертка над "ufo-переменной"(клевое имя на самом деле). этот самый нло- целый класс, с методами и пропертями, среди которых есть _size, содержащее как раз размер. Про доступ этим свойствам http://www.clarionlife.net/content/view/159/29/
Или я опять не про то?

Re: Размер имеет значение

Добавлено: 24 Июнь 2011, 12:53
Игорь Столяров
Спасибо ! Это как раз то, что нужно ... :)