Вверх ↑
Пакеты 
HiAsm4
Windows 
Компоненты 
Фaйлы 
Потоки - StreamCopy

StreamCopy
Краткое описание
   Компонент предназначен для копирования данных из одного потока данных в другой
Параметры
  • Count - Число байт, для которых нужно произвести копирование
  • Методы
  • doCopy - Копирует из массива данных Source в массив данных Dest Count байт.
  • События
  • onCopy - Событие происходит всякий раз после копирования данных и возвращает количество реально скопированных байт
  • Данные
  • Dest - Идентификатор потока, в который копируются данные
  • Source - Идентификатор потока, из которого копируются данные
  • Count - Число байт, которое нужно скопировать
  • Примеры
    Пример использования компонента StreamCopy
    
    Add(MainForm,2224029,70,91)
    {
    Caption="Пример использования StreamCopy"
    link(onCreate,12269353:doOpen,[])
    }
    Add(StreamCopy,8002139,210,168)
    {
    link(onCopy,11580723:doString,[])
    link(Dest,12269353:Stream,[(216,156)(174,156)])
    link(Source,13653062:Stream,[])
    link(Count,13653062:Size,[])
    }
    Add(FileStream,12269353,168,105)
    {
    @Hint=#1:||
    FileName="c:\\copystream.txt"
    Mode=2
    link(onLoad,13653062:doOpen,[])
    }
    Add(FileStream,13653062,217,105)
    {
    @Hint=#1:||
    FileName="C:\\Program Files\\HiAsm\\License.txt"
    }
    Add(Button,4600689,70,168)
    {
    Left=160
    Top=115
    link(onClick,8002139:doCopy,[])
    }
    Add(Message,1772701,329,168)
    {
    link(onMessage,12269353:doClose,[(378,174)(378,218)(151,218)(151,118)])
    }
    Add(FormatStr,11580723,273,168)
    {
    Mask="Coping byte %1 in c:copystream.txt "
    link(onFString,1772701:doMessage,[])
    }


    Пример использования компонента StreamCopy для копирования данных из MemoryStream
    
    Add(MainForm,14918352,77,196)
    {
    Caption="Пример использования StreamCopy"
    }
    Add(Button,8625726,77,259)
    {
    Left=151
    Top=110
    link(onClick,4667193:doEvent1,[])
    }
    Add(WinExec,10942360,259,252)
    {
    FileName="1.txt"
    }
    Add(FileStream,1249061,210,259)
    {
    FileName="1.txt"
    Mode=1
    AutoCopy=0
    link(onLoad,10942360:doShellExec,[])
    }
    Add(MemoryStream,3326441,168,196)
    {
    Stream=[ZIP3200000078DABBFBE99DC2C757EFDEBFF8F0EED183B76F7F3F557802A15E3C57F8FBFAE99BA76F3F3D50F04DCDCD2FAA0C2E294A4DCC550400F2912308]
    }
    Add(StreamCopy,12071797,161,266)
    {
    link(onCopy,1249061:doClose,[])
    link(Dest,1249061:Stream,[(167,254)(148,254)(148,309)(216,309)])
    link(Source,3326441:Stream,[])
    link(Count,3326441:Size,[])
    }
    Add(Hub,4667193,126,259)
    {
    link(onEvent1,1249061:doOpen,[])
    link(onEvent2,12071797:doCopy,[])
    }

    Замечания
       Компонент не выставляет указатели на начало данных в обоих потоках перед копированием данных. После окончания копирования указатели в обоих потоках смещаются на копичество скопированных байт

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