|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Чтения фрагмента данных по известным (начальной и конечной позиции)
Здравствуйте уважаемые. У меня следующая проблема:
Есть некий двоичный файл, необходимо считать из него определённый кусок, в Memorystream. Давлю вопрос третий день уже. В примере хотел бы увидеть, например копирование с 60го по 105ю позицию. Заранее благодарен. PS: -подопытный файлы у меня будут и 50кб, и 10Мб (не более) -Структура файлов мне заранее известна - Отловленные куски в дальнейшем будут сохраняться в отдельные файлики, тоже двоичной структуры разумеется |
#2
|
||||
|
||||
открыть файл в TFileStream, задать позицию через Position, прочитать нужное количество Read(var Buffer; Count: Longint), записать куда надо.
Пишу программы за еду. __________________ |
#3
|
|||
|
|||
Цитата:
|
#4
|
|||
|
|||
Вот архиватор этого "своего" формата, кстати создал я без проблем неделю назад. Данные запаковывает. И заголовок пишет. А при раз архивации проблемы всякие вылетают.
|
#5
|
||||
|
||||
я тоже пробовал и не раз. все сохраняет как нужно.
Пишу программы за еду. __________________ |
Этот пользователь сказал Спасибо NumLock за это полезное сообщение: | ||
Вовa (27.02.2013)
|
#6
|
|||
|
|||
Ясно. Спасибо. Видимо проблема у меня в том что всё это происходит в очень изощренном 3-е вложенном цикле While. По скольку Первые два наружних "while" цикла, разбираются с заголовком файла. Видимо у меня просто путаница гдето...
|
#7
|
||||
|
||||
загружает в Мемо строку из Unit1.pas именно
Цитата:
Код:
var FileStream: TFileStream; MemoryStream: TMemoryStream; begin FileStream:=TFileStream.Create('Unit1.pas', fmOpenRead); try FileStream.Position:=$24; MemoryStream:=TMemoryStream.Create; try MemoryStream.CopyFrom(FileStream, 74); MemoryStream.Position:=0; Memo1.Lines.LoadFromStream(MemoryStream); finally MemoryStream.Free; end; finally FileStream.Free; end; end; Пишу программы за еду. __________________ |
#8
|
|||
|
|||
Цитата:
Огромнейшее тебе человеческое спасибо! )) 5! |
#9
|
||||
|
||||
Всё прекрасно работает через MemoryStream
Код:
var fs : TFileStream; ms : TMemoryStream; begin fs:= TFileStream.Create(Имя файла, fmOpenRead); ms:= TMemoryStream.Create; fs.Position:= 60; ms.CopyFrom(fs, 105); //В ms кусок fs с 60 по 105 ... fs.Free; ms.Free; end; Я не понял Вашего вопроса, но всё же Вам на него отвечу! |