Как создать группу на основе *group?
Clarion, Clarion 7
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1412
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 12 раз
- Поблагодарили: 2 раза
- Контактная информация:
Как создать группу на основе *group?
Есть процедура, куда передается группа по адресу (*group), это Record файла (разных файлов)
Нужно внутри процедуры эту запись локально сохранять, чтобы потом восстанавливать
Как объявить? LIKE в такое не умеет
Нужно внутри процедуры эту запись локально сохранять, чтобы потом восстанавливать
Как объявить? LIKE в такое не умеет
RaFaeL
- Дед Пахом
- Старичок
- Сообщения: 3301
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 15 раз
- Поблагодарили: 51 раз
- Контактная информация:
Как создать группу на основе *group?
Если не брать в расчёт DynaLib (которая вроде бы так умеет), то я вижу только такой вариант: сохранять всё в queue
затем пройти по группе через WHO/WHAT и сохранить в очереди.
Код: Выделить всё
q queue
fname string(20) !- имя поля в переданной группе
fvalue ANY !- значение поля
С уважением, ДП
Дед Пахом
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1412
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 12 раз
- Поблагодарили: 2 раза
- Контактная информация:
RaFaeL
- Дед Пахом
- Старичок
- Сообщения: 3301
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 15 раз
- Поблагодарили: 51 раз
- Контактная информация:
Как создать группу на основе *group?
У меня нет, но уверен, что DynaLib это может, она, имхо, для этого и написана
С уважением, ДП
Дед Пахом
Как создать группу на основе *group?
А если просто делать слепок памяти с адреса группы?
C10, Win10x64
vic7tar
Как создать группу на основе *group?
Вроде запись группы легко превращается в строку. И наоборот...
Не проскочит что-нибудь вроде?
Не проскочит что-нибудь вроде?
Код: Выделить всё
Gr &Group
SaveGroup Any
SaveGroup = Gr & ''
Gr = SaveGroup
Yufil
-
- ✯ Ветеран ✯
- Сообщения: 5180
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Как создать группу на основе *group?
Если это Record файла, не вариант воспользоваться какими-нибудь методами класса FileManager? SaveBuffer, RestoreBuffer?
We are hard at work… for you. 

kreator
- Игорь Столяров
- Ветеран движения
- Сообщения: 8077
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 29 раз
- Поблагодарили: 98 раз
Как создать группу на основе *group?
Здесь ещё вопрос, как запись сохраняется. Например, если содержимое Record не важно - то можно передать Record как String
и, например, в процедуре записывать / восстанавливать как бинарный слепок (BLOB).
У нас например так делается корзина удалённых записей. Т.е. различные виды удаляемых записей пишутся в общий
файл как BLOB поле, с указанием вида записи. А при восстановлении - бинарный BLOB просто переписывается обратно в нужный Record.
Make Clarion Great Again ! 
Игорь Столяров
- Дед Пахом
- Старичок
- Сообщения: 3301
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 15 раз
- Поблагодарили: 51 раз
- Контактная информация:
Как создать группу на основе *group?
Можно прототип процедуры сделать Proc(STRING), а не Proc(GROUP), тогда группа как строка передастся.
С уважением, ДП
Дед Пахом
- Дед Пахом
- Старичок
- Сообщения: 3301
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 15 раз
- Поблагодарили: 51 раз
- Контактная информация:
Как создать группу на основе *group?
А ещё можно группу в xml или json сериализовать, а потом обратно.
С уважением, ДП
Дед Пахом
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1412
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 12 раз
- Поблагодарили: 2 раза
- Контактная информация:
Как создать группу на основе *group?
Суть проблемы следующаяИгорь Столяров писал(а): 28 Декабрь 2018, 11:43Здесь ещё вопрос, как запись сохраняется. Например, если содержимое Record не важно - то можно передать Record как String
Есть форма Update (их много, ну допустим 50 штук разных по разным файлам)
В каждой есть условно список доп параметров. На списке на любое действие пользователя вызывается процедура source c кучей параметров, в т.ч. условно FIL:Record
Внутри этого source делается много чего, могут открываться разные другие формы, обрабатываться записи и т.п., в т.ч. по файлу, с update которого вызывается source. И соответственно иногда получаем ситуацию, когда буфер записи слетает и после работы source в основной форме теряются изменения, внесенные пользователем. Поэтому перед работой source надо запись сохранять, а после - восстанавливать. Так вот чтобы не лазить в 50 форм логично сделать это все внутри source так как record туда и так уже передается для других нужд. Отсюда и возник вопрос
Про ANY надо посмотреть варианты, спасибо, не догадалсяВроде запись группы легко превращается в строку. И наоборот...
Не проскочит что-нибудь вроде?
RaFaeL
- Игорь Столяров
- Ветеран движения
- Сообщения: 8077
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 29 раз
- Поблагодарили: 98 раз
Как создать группу на основе *group?
Т.е. выход из Sourse всегда в том же месте, где был вход Прекрасно !RaFaeL писал(а): 28 Декабрь 2018, 13:34логично сделать это все внутри source так как record туда и так уже передается для других нужд

- Получаем размер Size(*Group) и создаём под неё String такой длины.
- Сохраняем String = Group
- Работаем …
- Восстанавливаем Group = String, уничтожем String, .
- Всё. Выход из Source.

Make Clarion Great Again ! 
Игорь Столяров
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5307
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 12 раз
- Поблагодарили: 65 раз
Как создать группу на основе *group?
Я предпочитаю подобные фоновые расчеты делать через алиасы. Просто и безопасно...
C6/C12, ШВС, tps/btrieve.
finsoftrz
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5307
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 12 раз
- Поблагодарили: 65 раз
Как создать группу на основе *group?
А почему именно BLOB, а не STRING?Игорь Столяров писал(а): 28 Декабрь 2018, 11:43Здесь ещё вопрос, как запись сохраняется. Например, если содержимое Record не важно - то можно передать Record как String
и, например, в процедуре записывать / восстанавливать как бинарный слепок (BLOB).
У нас например так делается корзина удалённых записей. Т.е. различные виды удаляемых записей пишутся в общий
файл как BLOB поле, с указанием вида записи. А при восстановлении - бинарный BLOB просто переписывается обратно в нужный Record.
C6/C12, ШВС, tps/btrieve.
finsoftrz
- Игорь Столяров
- Ветеран движения
- Сообщения: 8077
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 29 раз
- Поблагодарили: 98 раз
Как создать группу на основе *group?
А потому, что размер сохраняемой RECORD заранее не известен. Поэтому BLOB (или MEMO для Btrieve).
Make Clarion Great Again ! 
Игорь Столяров
Вернуться в «CLARION for Windows»
Перейти
- CW
- ↳ CLARION for Windows
- ↳ CLARION for Internet
- ↳ Clarion.NET
- Эксклюзив
- ↳ Приват
- CLARION и...
- ↳ Reports
- ↳ Железо
- ↳ Готовые программы, шаблоны, библиотеки...
- ↳ cJSON
- ↳ LibCurl
- ↳ MAV
- ↳ SQL, Oracle, ...
- ↳ Multi-программирование(Pascal/Delphi, и т.д.)
- ↳ WinDev
- DOS
- ↳ CLARION for DOS
- Разное
- ↳ Новости
- ↳ English
- ↳ Ресурсы
- ↳ Работа
- ↳ Обо всем ...
- ↳ Обсуждение этого Форума (типа, Гостевая книга)