![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Здравствуйте. Использую LoadFromStream для чтения данных с потока. Прошу помощи в организации чтения данных с потока с определенной позиции и до определенной, а не весь поток после текущего положения.
P.S. Использую TMemoryStream для чтения/записи RxRichEdit. Заранее благодарен. |
#2
|
||||
|
||||
![]() Цитата:
Код:
... var mem,tar: TMemoryStream; begin mem := TMemoryStream.Create; tar := TMemoryStream.Create; mem.LoadFromFile('C:\Data.dat'); mem.Seek(15000,soFromCurrent); //переносим текущую позицию на 15000 байт вперёд tar.CopyFrom(mem,20000); //и читаем 20000 байт в поток tar ... TAleD = class(TUser) public function HelpMe(ASubject, ARequest: String): String; function GiveMeExample(ASubject: String): TStringList; procedure WriteReview(APost: Integer; ADescription: TStringList); end; |
#3
|
|||
|
|||
![]() Большое спасибо. И еще 1 специфичный вопрос про работу с потоками: когда я записываю содержимое RxRichEdit в поток 2 раза подряд (например при первой записи в поле написано число '123', при второй - '45'), то при чтении информации с начала потока в это же поле - выводится только '123'. Как это объяснить?
Заранее благодарен |
#4
|
||||
|
||||
![]() Цитата:
TAleD = class(TUser) public function HelpMe(ASubject, ARequest: String): String; function GiveMeExample(ASubject: String): TStringList; procedure WriteReview(APost: Integer; ADescription: TStringList); end; |
#5
|
||||
|
||||
![]() Если вы все правильно делаете с потоком, то такого быть не может, но замечено, что иногда в режиме отладки дельфак неправильно отображает текущее значение - выводит старое.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#6
|
|||
|
|||
![]() Вот код. 2 RxRichEdit. Пишу в них что-нибудь, затем жму Button 2. После чего Button 3 и Button 1. В итоге - отображается только то, что было в RxRichEdit1.
Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, RxRichEd; type TForm1 = class(TForm) RxRichEdit1: TRxRichEdit; Button1: TButton; Button2: TButton; Memo1: TMemo; RxRichEdit2: TRxRichEdit; Button3: TButton; Button4: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; t:TMemoryStream; pos:integer; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin RxRichEdit1.Lines.LoadFromStream(t); //t.Free; end; procedure TForm1.Button2Click(Sender: TObject); begin RxRichEdit1.Lines.SaveToStream(t); pos:=t.Position; RxRichEdit2.Lines.SaveToStream(t); Memo1.Text:=Inttostr(pos)+' '+Inttostr(t.Position); end; procedure TForm1.FormCreate(Sender: TObject); begin t:=TMemoryStream.Create; end; procedure TForm1.Button3Click(Sender: TObject); begin t.Seek(0,0); end; procedure TForm1.Button4Click(Sender: TObject); begin t.Seek(pos,0); end; end. |