Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Компоненты и классы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 16.11.2011, 15:28
Last Living Man Last Living Man вне форума
Прохожий
 
Регистрация: 10.11.2011
Сообщения: 25
Репутация: 513
По умолчанию проблема с TMemoryStream

Здравствуйте.
Пытаюсь заполнить TMemoryStream одним числом таким способом:

Код:
var MemStream: TMemoryStream;
     i, buf:byte;
begin
  try
    MemStream := TMemoryStream.Create;
    buf := 5;
    for i := 0 to 4 do
    begin
      MemStream.Write(buf, SizeOf(buf));
    end;
    StreamToMemo(MemStream, Memo);
  finally
    MemStream.Free;
  end;
end;

Смотрю как она выглядит функцией StreamToMemo, а там вместо чисел buf одни нули. Также при копировании ее в любую другую TStream выдает ошибку Stream read error.
Функция StreamToMemo испробована на TFileStream и работает без косяков.
Ответить с цитированием
  #2  
Старый 16.11.2011, 15:56
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Код:
type
  TForm1 = class(TForm)
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);

procedure Stream2Memo(AStream: TStream; AMemo: TMemo);
var
  i: Integer;
  Buf: Byte;
begin
  AStream.Position:=0;
  AMemo.Clear;
  for i:=0 to AStream.Size-1 do
  begin
    AStream.Read(Buf, SizeOf(Buf));
    AMemo.Lines.Add(IntToStr(Buf));
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  AMemoryStream: TMemoryStream;
  i: Integer;
  b: Byte;
begin
  AMemoryStream:=TMemoryStream.Create;
  try
    for i:=0 to 4 do
    begin
      b:=i*10;
      AMemoryStream.Write(b, SizeOf(b));
    end;
    Stream2Memo(AMemoryStream, Memo1);
  finally
    AMemoryStream.Free;
  end;
end;

все честно - в Memo1 будет:
Цитата:
0
10
20
30
40
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #3  
Старый 16.11.2011, 16:10
Last Living Man Last Living Man вне форума
Прохожий
 
Регистрация: 10.11.2011
Сообщения: 25
Репутация: 513
По умолчанию

NumLock, спасибо, просто надо было обнулять позицию стрима, в функции вывода мемо. Щас попробую копировать содержимое стримов, если что спрошу)))
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:32.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter