Страница 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?