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

Ссылки на GROUP

Добавлено: 09 Январь 2020, 17:49
Игорь Столяров
Привет всем ! :)
Подскажите пожалуйста, в чём проблема с объявлением ссылок на GROUP:

Вот так - правильно:

Код: Выделить всё

Group1  Group,Type
X       SReal
Y       SReal
Next    &Group1
        end
А вот так - уже неправильно:

Код: Выделить всё

Group1  Group,Type
X       SReal
Y       SReal
Next    &Group1
        end

Group2  Group,Type
Width       SReal
Height      SReal
Link1       &Group1  ! НЕВЕРНЫЙ ТИП ДАННЫХ
        end
Почему !? :(

Ссылки на GROUP

Добавлено: 09 Январь 2020, 20:51
Дед Пахом
По-моему, допускается только &GROUP.

Ссылки на GROUP

Добавлено: 10 Январь 2020, 10:03
kreator
Игорь Столяров, а в чём неправильность второго варианта? Я не догнал :) .
Ещё "like" есть, если что.

Ссылки на GROUP

Добавлено: 10 Январь 2020, 10:33
Игорь Столяров
kreator писал(а): 10 Январь 2020, 10:03Я не догнал
Я тоже. Но транслятор говорит, что неправильный тип данных.
LIKE - не подходит, там должна быть ссылка на GROUP.

Ссылки на GROUP

Добавлено: 10 Январь 2020, 11:50
kreator
У меня на одиннадцатой версии второй вариант прошёл. Без амперсанда, да, ругается.

Ссылки на GROUP

Добавлено: 12 Январь 2020, 7:53
Губин Игорь
kreator писал(а): 10 Январь 2020, 11:50Без амперсанда, да, ругается.
Без амперсанда и должен по синтаксису ругаться, т.к. Group1 это тип

Ссылки на GROUP

Добавлено: 12 Январь 2020, 13:27
vic7tar
Игорь Столяров писал(а): 09 Январь 2020, 17:49Вот так - правильно:

Код: Выделить всё

Group1  Group,Type
X       SReal
Y       SReal
Next    &Group1
        end
...
Вот так совсем неправильно.
Зачем гадать?, ну ведь Дед Пахом указал на правильное направление:

Код: Выделить всё

Group1  Group,Type
X       SReal
Y       SReal
Next    &Group
        end

Group2  Group,Type
Width       SReal
Height      SReal
Link1       &Group  
         end

G1 Group(Group1). 
G2 Group(Group2).

 CODE
    G1.X = 1
    G1.Y = 2
    G1.Next &= G1

    G2.Height = 3
    G2.Width = 4
    G2.Link1 &= G1
    ...

Ссылки на GROUP

Добавлено: 12 Январь 2020, 13:57
Игорь Столяров
vic7tar писал(а): 12 Январь 2020, 13:27Зачем гадать?, ну ведь Дед Пахом указал на правильное направление:
Оно как бы да, но только в том случае, если сам себе архитектор и программист.
А в моём, тяжёлом, случае описывается структура данных, где эти цепочки групп реализуются внешней DLL на VC6. :(

Ссылки на GROUP

Добавлено: 12 Январь 2020, 14:36
RaFaeL
Во внешнюю DLL надо объявлять все эти ссылки как LONG и передавать address()
Посмотри как в libxlsxwriter сделано ну например метод SetPoints ну или попроще SetProperties

Ссылки на GROUP

Добавлено: 12 Январь 2020, 15:10
vic7tar
RaFaeL писал(а): 12 Январь 2020, 14:36Во внешнюю DLL надо объявлять все эти ссылки как LONG и передавать address()
Не обязательно, можно как address, а можно как и ссылку на группу.
Игорь Столяров писал(а): 12 Январь 2020, 13:57А в моём, тяжёлом, случае описывается структура данных, где эти цепочки групп реализуются внешней DLL на VC6.
А этот тяжёлый случай случаем не zint.h? :lol:

Ссылки на GROUP

Добавлено: 12 Январь 2020, 15:15
Игорь Столяров
vic7tar писал(а): 12 Январь 2020, 15:10А этот тяжёлый случай случаем не zint.h?
Ага. В принципе там уже всё разрулилось. :)

Ссылки на GROUP

Добавлено: 13 Январь 2020, 13:08
Игорь Столяров
Всё было хорошо, пока не появились классы … :(
Нужно, что бы в классе была ссылка на GROUP заданной структуры.

Код: Выделить всё

TGroup         Group,Type
Number             Long
Phone                CString(121)
                    end

TClass           Class, Type, Module('XXX.clw'), Link('XXX.clw')
MyGroup              &TGroup     ! <--- ОШИБКА: НЕВЕРНЫЙ ТИП ДАННЫХ
FlagLoad              Byte(False)
                    end
Это можно как-то сделать ?

Ссылки на GROUP

Добавлено: 13 Январь 2020, 13:17
Губин Игорь
Странно, на QUEUE проходит...

Некогда проверять, попробуй &Group(TGroup)

Ссылки на GROUP

Добавлено: 13 Январь 2020, 14:11
kreator
Вот так прокатывает:

Код: Выделить всё

TClass           Class, Type, Module('XXX.clw'), Link('XXX.clw')
MyGroup              &Group
FlagLoad              Byte(False)
                    end
В ABC классах много таких конструкций. Всё равно же передаётся адрес. Даже если и не в клариновскую часть.

Ссылки на GROUP

Добавлено: 13 Январь 2020, 16:00
Дед Пахом
Объявите LIKE(TGroup) в классе, и проблем не будет:

Код: Выделить всё

TClass   Class, Type, Module('XXX.clw'), Link('XXX.clw')
MyGroup              LIKE(TGroup)
FlagLoad              Byte(False)
                    end