Все сразу ?
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- Игорь Столяров
- Ветеран движения
- Сообщения: 8034
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 96 раз
Все сразу ?
Привет всем !
Есть несколько разных файлов с данными, в каждом есстественно есть структура RECORD.
Есть процедура, которая упаковывает эти разношерстные записи и записывает их с указанием типа файла в BLOB поле архивного файла.
Вопрос: Как передать в процедуру структуру RECORD ? Я сейчас указывают тип параметра STRING, вроде работает, но нет ощущения правильности моих действий ...
Может быть кто-нибудь знает как это правильно сделать ?
Заранее спасибо !
Есть несколько разных файлов с данными, в каждом есстественно есть структура RECORD.
Есть процедура, которая упаковывает эти разношерстные записи и записывает их с указанием типа файла в BLOB поле архивного файла.
Вопрос: Как передать в процедуру структуру RECORD ? Я сейчас указывают тип параметра STRING, вроде работает, но нет ощущения правильности моих действий ...
Может быть кто-нибудь знает как это правильно сделать ?
Заранее спасибо !
Make Clarion Great Again ! 
- Admin
- Администратор
- Сообщения: 4010
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 53 раза
- Поблагодарили: 33 раза
- Контактная информация:
Re: Все сразу ?
Кажись так можно
Код: Выделить всё
File FILE,DRIVER('ASCII'),PRE(File)
Record RECORD
...
END
END
MyProc PROCEDURE(*File:Record MyRec)
...
MyProc PROCEDURE(*GROUP MyRec)
...
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
- Игорь Столяров
- Ветеран движения
- Сообщения: 8034
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 96 раз
Re: Все сразу ?
Спасибо. Первый вариант сразу не подходит, т.к. я говорил о том, что в процедуру архивации передаются записи разных файлов (с разной длиной и структурой).
Второй интересней (структура RECORD является разновидностью GROUP) - буду пробовать ...
Второй интересней (структура RECORD является разновидностью GROUP) - буду пробовать ...
Make Clarion Great Again ! 
-
- Прохожий
- Сообщения: 4
- Зарегистрирован: 20 Август 2010, 11:38
Re: Все сразу ?
Не совсем понятен вопрос. Свойство файла FileRef{PROP:Record} возвращает физический адресс буфера файла в памяти. Этот адресс находится в описании заголовка файла.
Получения информаци о полях RECORD
Код: Выделить всё
Proc PROCEDURE(FILE FileRef)
Rec &GROUP
Addr LONG
Size LONG
Value ANY
CODE
Rec &= FileRef{PROP:Record}
Addr = FileRef{PROP:Record}
!Так же можно определить этот адресс
Addr = POKE(ADDRESS(FileRef)+2Fh)
!Размер буфера файла
Size = POKE(ADDRESS(FileRef)+1Fh)
!Получить значение N-поля
Value &= WHAT(Rec,N)
Код: Выделить всё
Proc PROCEDURE(FILE FileRef)
I BYTE
Label STRING(20)
CODE
LOOP I = 1 TO FileRef{PROP:Fields}
Label = FileRef{PROP:Label,I} !Имя поля
.............
END
- WadimZapara
- Активист
- Сообщения: 181
- Зарегистрирован: 11 Июнь 2008, 12:11
- Откуда: Тамбов
Re: Все сразу ?
Замечательная библиотека DinaLib (автор: Олег Руденко)
с нею - всё легко
с нею - всё легко
Компьютер имеет то преимущество перед мозгом, что им пользуются...
Re: Все сразу ?
Есть версия для с7.2?WadimZapara писал(а):Замечательная библиотека DinaLib (автор: Олег Руденко)
с нею - всё легко