![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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й позиции?
|