Вверх ↑
Пакеты 
HiAsm4
Windows 
Компоненты 
Инcтpумeнты 
Криптография - RSRepair

RSRepair
Краткое описание
  Компонент служит для восстановления данных кодами Рида-Соломона (255,223,16)
Параметры
  • LengthDataBlock - Размер блока данных (1..223)
  • ValueSymbolFill - Значение символа заполнителя (0..255)
  • Методы
  • doEncode - Получает блок контрольных сумм ARG(DataEncode)
  • doDecode - Восстанавливает данные ARG(DataDecode, ChkSumDecode)
  • События
  • onEncode - Событие происходит всякий раз после окончания получения блока контрольных сумм и выдает результат в поток ARG(ChkSumBlock, DataBlock, Remaind)
  • onDecode - Событие происходит всякий раз после окончания восстановления блока данных и выдает результат в поток ARG(RepairDataBlock)
  • onInfo - Событие происходит всякий раз после окончании какой-либо операции и выдает код завершения в поток ARG(Info, CountErrors)
  • Свойства
  • DataBlock - Содержит текущий блок данных
  • Remaind - Содержит текущие оставшиеся данные, для которых не получен блок контрольных сумм
  • ChkSumBlock - Содержит текущий блок контрольных сумм
  • RepairDataBlock - Содержит текущий восстановленный блок данных
  • CountErrors - Содержит текущее исправленное количество ошибок
  • Данные
  • DataEncode - Данные для получения блока контрольных сумм
  • DataDecode - Данные для восстановления
  • ChkSumDecode - Блок контрольных сумм для восстановления
  • Пример
    
    Add(MainForm,2953706,84,119)
    {
    Width=531
    Height=712
    Caption="Correction Errors"
    Position=1
    link(onCreate,14113634:doPart,[])
    }
    Add(StrList,15922455,490,266)
    {
    Strings=#29:Нет необходимости в коррекции|17:Ошибки исправлены|20:Коррекция невозможна|31:Неправильная длина блока данных|28:Неправильная длина блока CRC|0:|
    Point(doGetString)
    Point(onGetString)
    link(onGetString,5861790:doString,[])
    }
    Add(Button,13514000,238,189)
    {
    Left=200
    Top=645
    TabOrder=-1
    Caption="Encode"
    link(onClick,15853410:doEncode,[(292,195)(292,230)])
    }
    Add(FormatStr,5861790,539,273)
    {
    DataCount=1
    Mask="== %1 =="
    link(onFString,9712893:doWork2,[])
    }
    Add(Button,5887242,238,231)
    {
    Left=260
    Top=645
    TabOrder=-1
    Caption="Decode"
    link(onClick,15853410:doDecode,[])
    }
    Add(Message,16698352,609,273)
    {
    }
    Add(Label,15501990,112,210)
    {
    Left=5
    Top=10
    Width=506
    Height=17
    Font=[MS Sans Serif,8,1,128,1]
    Caption="Пример восстановления данных RS-кодами (255,223,16)"
    AutoSize=1
    Alignment=2
    }
    Add(Memo,10056829,315,105)
    {
    Left=5
    Top=35
    Width=500
    Height=115
    ScrollBars=2
    }
    Add(Memo,10335671,609,119)
    {
    Left=5
    Top=220
    Width=500
    Height=115
    ScrollBars=2
    }
    Add(MT_MultiData,3328707,490,133)
    {
    Count=3
    link(onData1,12260171:doConvert,[(541,139)(541,83)])
    link(onData2,10335671:doText,[])
    link(onData3,11749085:doEvent1,[(548,153)(548,223)])
    }
    Add(Memo,13816342,658,196)
    {
    Left=5
    Top=360
    Width=500
    Height=115
    ScrollBars=2
    }
    Add(Memo,4823845,490,210)
    {
    Left=5
    Top=500
    Width=500
    Height=115
    ScrollBars=2
    }
    Add(If_else,940537,378,308)
    {
    Type=5
    Op2=Integer(1)
    link(onTrue,15922455:doGetString,[])
    link(onFalse,6498024:doSeparateMT,[(426,321)(426,342)])
    }
    Add(FormatStr,5485714,539,336)
    {
    DataCount=1
    Mask="== %1 ==\r\n"
    link(onFString,9712893:doWork3,[(585,342)])
    }
    Add(HubEx,9712893,581,273)
    {
    link(onEvent,16698352:doMessage,[])
    }
    Add(Convertor,1073502,490,336)
    {
    Mode=16
    Word_1="ошибка обнаружена и исправлена"
    Word_2="ошибки обнаружено и исправлено"
    Word_5="ошибок обнаружено и исправлено"
    link(onResult,5485714:doString,[])
    }
    Add(RSRepair,15853410,315,224)
    {
    LengthDataBlock=128
    link(onEncode,6155545:doValue,[(363,230)(363,139)])
    link(onDecode,10918612:doTrim,[])
    link(onInfo,940537:doCompare,[(363,244)(363,314)])
    link(DataEncode,10056829:Text,[])
    link(DataDecode,10335671:Text,[(328,187)(615,187)])
    link(ChkSumDecode,6155545:Value1,[(335,180)(447,180)])
    }
    Add(Application,3174591,140,63)
    {
    }
    Add(FilePartElm,14113634,140,133)
    {
    Mode=0
    Point(Part)
    link(onPart,5715878:doPart,[])
    link(FileName,2247906:Var2,[])
    }
    Add(FilePartElm,5715878,189,133)
    {
    Mode=2
    link(onPart,5191773:doString,[])
    link(FileName,2247906:Var3,[(195,110)])
    }
    Add(FormatStr,5191773,238,133)
    {
    Mask="%1%2.sha"
    link(onFString,10056829:doLoad,[])
    link(Str1,14113634:Part,[(244,121)(208,121)(208,178)(146,178)])
    }
    Add(GetDataEx,2247906,140,105)
    {
    link(Data,3174591:AppFileName,[])
    }
    Add(Edit,15489254,609,77)
    {
    Left=5
    Top=175
    Width=500
    Cursor=1
    TabOrder=-1
    Text=""
    }
    Add(StreamConvertor,12260171,560,77)
    {
    Mode=5
    link(onResult,15489254:doText,[])
    }
    Add(MT_MultiMem,6155545,441,133)
    {
    Count=1
    link(onData,3328707:doSeparateMT,[])
    }
    Add(Trim,10918612,441,231)
    {
    Char="/0"
    link(onTrim,4823845:doText,[])
    }
    Add(MT_MultiData,6498024,441,336)
    {
    From=1
    Count=1
    link(onData1,1073502:doConvert,[])
    }
    Add(Label,2203238,119,217)
    {
    Left=205
    Top=155
    Width=86
    Height=17
    Caption="Исходный текст"
    }
    Add(Label,2359183,128,224)
    {
    Left=140
    Top=340
    Width=241
    Height=17
    Caption="Блок текста для получения контрольных сумм"
    }
    Add(Label,1956899,135,230)
    {
    Left=200
    Top=480
    Width=98
    Height=17
    Caption="Оставшийся текст"
    }
    Add(Label,134362,143,237)
    {
    Left=180
    Top=620
    Width=160
    Height=17
    Caption="Восстановленный блок текста"
    }
    Add(Label,9877906,152,244)
    {
    Left=185
    Top=200
    Width=128
    Height=17
    Caption="Блок контрольных сумм"
    }
    Add(Hub,11749085,574,217)
    {
    link(onEvent1,13816342:doText,[])
    link(onEvent2,8175064:doMessage,[(623,230)(623,258)])
    }
    Add(Message,8175064,658,252)
    {
    Message="Исправьте что-либо в "блоке текста для получения контрольных сумм""
    Caption=" "
    }

    Замечания
    Обновление элемента: [svn]RSRepair.pas[/svn]
    BB-code статьи для вставки
    Всего комментариев: 0
    (комментарии к статье еще не добавлены)
    Комментарий
    ...