![]() |
|
#1
|
|||
|
|||
![]() Подскажите как записать переменную в поток и потом ее считать
если можно кодом, перекапал кучу примеров, не понимаю |
#2
|
||||
|
||||
![]() Код:
procedure TForm1.Button1Click(Sender: TObject); var m:TMemoryStream; i:integer; begin m:=TMemoryStream.Create; i:=1684968; m.Write(i,SizeOf(i)); i:=0; m.Position:=0; m.Read(i,SizeOf(i)); ShowMessage(IntToStr(i)); m.free; end; |
#3
|
|||
|
|||
![]() О спасибо то что нужно
если пытаюсь прочитать это с другой кномки то выдает другое число Как например в таймер поставить чтение на заголовок формы? |
#4
|
|||
|
|||
![]() и еще вопрос суда же
что бы не грузить память в поток можно просто перезаписывать, думаю что так: Код:
procedure TForm1.Button3Click(Sender: TObject); var m:TMemoryStream; i:integer; begin i:=10; m.Position:=0; m.SaveToStream(i); m.Free; end; Код:
Incompatible types: 'TStream' and 'Integer' |
#5
|
||||
|
||||
![]() Цитата:
Чтобы читать то же что и записал, нужно объявить глобальную переменную TMemoryStream. затем при создании формы создаешь поток, при закрытии - освобождаешь его. |
#6
|
|||
|
|||
![]() а можно кодом?
|
#7
|
||||
|
||||
![]() делаешь раз:
Код:
var Form1: TForm1; m: TMemoryStream; делаешь два: Код:
procedure TForm1.FormCreate(Sender: TObject); begin m:= TMemoryStream.Create; end; делаешь три: гдето в программе работаешь с потоком. Он будет храниться все время жизни формы. делаешь четыре: Код:
procedure TForm1.FormDestroy(Sender: TObject); begin m.Free; end; |
#8
|
|||
|
|||
![]() вот это объяснил спасибо!
не понимаю одного m.Write(i,SizeOf(i)); - пишем в поток m.Position:=0; - перемещаем на 0 строку m.Read(i,SizeOf(i)); - читаем поток если перезаписать в поток на строку 0 то тоже m.Write(i,SizeOf(i));? зачем тогда использовать Stream.Write(S[1], Length(S));? если нужно записать например в строку 2 то писать m.Position:=2; в том же потоке? |
#9
|
||||
|
||||
![]() поток состоит из байтов, а не из строк.
m.Position устанавливает указатель чтения\записи на определенную позицию в потоке (В байтах). вроде так. я особо в теме потоков не подкован. Вопрос к гуру программирования: потоки аналогичны нетипизированным файлам, так? и приемы у них похожие? Кто может уточнить, пожалуйста. самому интересно! |
#10
|
|||
|
|||
![]() Цитата:
Метод TStrings.LoadFromStream делает довольно сложную работу по разбиению записаных байтов на строки. Хотя с виду и всё просто. |
#11
|
||||
|
||||
![]() Цитата:
|