На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Rouse_, jack128, Krid
  
    > TMemoryStream -> array of Byte , и наоборот
      Для преобразования TMemoryStream в array of Byte можно использовать следующий код:

      ExpandedWrap disabled
        procedure TForm1.Button1Click(Sender: TObject);
        var
          M: TMemoryStream;
          Buff: array of Byte;
        begin
          M := TMemoryStream.Create;
          try
            M.LoadFromFile('c:\test.htm');
            SetLength(Buff, M.Size);
            M.Position := 0;
            M.Read(Buff[0], M.Size);
          finally
            M.Free;
          end;
        end;


      Автор: Rouse_
        Обратное преобразование осуществляется почти точно так же:
        ExpandedWrap disabled
          procedure TForm1.Button2Click(Sender: TObject);
          const
            Start = 49;
            AnEnd = 57;
            ArLen = AnEnd - Start + 1;
          var
            M: TMemoryStream;
            Buff: array of Byte;
            I: Integer;
          begin
            SetLength(Buff, ArLen);
            for I := 0 to ArLen - 1 do
              Buff[I] := Start + I;
              
            M := TMemoryStream.Create;
            try
              M.Write(Buff[0], ArLen);
              M.SaveToFile('c:\test.txt');    
            finally
              M.Free;
            end;
          end;

        В результате должен получится файл c:\test.txt такого содержания:
        ExpandedWrap disabled
          123456789

        поскольку числа с 49 до 51 являются ASCII-кодами этих чисел, а соответственно и являются их символьным представлением.

        Автор: s-mike
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0191 ]   [ 16 queries used ]   [ Generated: 28.03.24, 16:42 GMT ]