Страница 1 из 1
Все сразу ?
Добавлено: 18 Август 2010, 14:45
Игорь Столяров
Привет всем !
Есть несколько разных файлов с данными, в каждом есстественно есть структура RECORD.
Есть процедура, которая упаковывает эти разношерстные записи и записывает их с указанием типа файла в BLOB поле архивного файла.
Вопрос: Как передать в процедуру структуру RECORD ? Я сейчас указывают тип параметра STRING, вроде работает, но нет ощущения правильности моих действий ...
Может быть кто-нибудь знает как это правильно сделать ?
Заранее спасибо !
Re: Все сразу ?
Добавлено: 18 Август 2010, 23:47
Admin
Кажись так можно
Код: Выделить всё
File FILE,DRIVER('ASCII'),PRE(File)
Record RECORD
...
END
END
MyProc PROCEDURE(*File:Record MyRec)
...
MyProc PROCEDURE(*GROUP MyRec)
...
Re: Все сразу ?
Добавлено: 19 Август 2010, 8:23
Игорь Столяров
Спасибо. Первый вариант сразу не подходит, т.к. я говорил о том, что в процедуру архивации передаются записи разных файлов (с разной длиной и структурой).
Второй интересней (структура RECORD является разновидностью GROUP) - буду пробовать ...
Re: Все сразу ?
Добавлено: 20 Август 2010, 12:19
serg_rivne
Не совсем понятен вопрос. Свойство файла FileRef{PROP: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)
Получения информаци о полях RECORD
Код: Выделить всё
Proc PROCEDURE(FILE FileRef)
I BYTE
Label STRING(20)
CODE
LOOP I = 1 TO FileRef{PROP:Fields}
Label = FileRef{PROP:Label,I} !Имя поля
.............
END
Re: Все сразу ?
Добавлено: 04 Сентябрь 2010, 1:13
WadimZapara
Замечательная библиотека DinaLib (автор: Олег Руденко)
с нею - всё легко
Re: Все сразу ?
Добавлено: 06 Сентябрь 2010, 11:47
nik190994
WadimZapara писал(а):Замечательная библиотека DinaLib (автор: Олег Руденко)
с нею - всё легко
Есть версия для с7.2?