![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Здравия всем! Ищу хороший мануал о работе с стрим и файлстрим. Гуглил, но все что нашел как-то сжато и не оч. понятно. Например нет инфы как загрузить файл в сам стрим, проделать внутри него несколько операций и сохранить в файл. В общем помогите литературой
|
#2
|
||||
|
||||
![]() Ой ли гуглил?
Вот например, как записать строчку в файл через поток Код:
uses Classes, Sysutils; ... var s: string; begin s:= 'Bla-bla-bla'; { fmCreate fmOpenRead fmOpenWrite fmOpenReadWrite fmShareCompat fmShareExclusive fmShareDenyWrite fmShareDenyRead fmShareDenyNone } with TFileStream.create('Имя файла', fmOpenWrite) do try Write(pointer(s)^, Length(s)); // что-то ещё делаем Finally free; end; end; Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#3
|
|||
|
|||
![]() Alegun, а вот зачем здесь мы используем указатель? В чем подвох? Нельзяли просто написать
Код:
write(s,length(s)); |
#4
|
||||
|
||||
![]() Потому что это типизированный указатель на переменную типа String.
Он содержит в себе не символы, как string или числа, как integer, а только адреса памяти по которым эти самые данные и находятся. Я не понял Вашего вопроса, но всё же Вам на него отвечу! Последний раз редактировалось Alegun, 10.05.2013 в 16:50. |
#5
|
|||
|
|||
![]() Не робит код - кидает ошибку: EAccessViolation и выделяет строку
Код:
Write(pointer(s)^, Length(s)); |
#6
|
|||
|
|||
![]() Разобрался, все работает. А как удалить нужный байт инфы? Сиком переместиться на нужную позицию, а дальше? Ну например прочитал файл размером 20, как удалить данные на 10й позиции?
|