Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Побайтное чтение и запись


Автор: Chyslyvchyk 4.12.2004, 12:52
Есть здоровення база неизвестного формата (есть подозрение, что это BTree). Вроде бы известен размер записи. smile
Нужно разбить базу на записи и записать в новый файл. Думаю, нужно сделать это побайтово.
smile smile smile

Автор: <Spawn> 4.12.2004, 14:16
А при чем тут тогда базы данных? Тебе нужно открыть файл и прочитать из него блоки нужного размера, если ты точно уверен, что это то что тебе нужноsmile Читать можешь при помощи TFileStream, Read, BlockRead, ReadFile... К примеру:

Код

var
 FileStream: TFileStream;
 Buffer: TBuffer; // Структура читаемых данных
begin
 with FileStream.Create('C:\FileName', fmOpenRead) do
 try
   while Position < Size do
     Read(Buffer, SizeOf(TBuffer));
     //Тут делаешь с прочитаными данными(Buffer) что хочешь
 finally
   Free;
 end;

Автор: Chyslyvchyk 6.12.2004, 10:58
Ругалось Access violation at address... на строке:
Код

with FileStream.Create('C:\MyFileName.DAT', fmOpenRead) do


Переписано:
Код

procedure TForm1.ButtonClick(Sender: TObject);
var
FileStream, OldFile: TFileStream;
Buffer: Variant;
F2: TextFile;
begin
AssignFile(F2, 'С:\MyFileName.txt');
Rewrite(F2);
OldFile := FileStream.Create('C:\MyFileName.DAT', fmOpenRead);
with OldFile do
begin
try
while Position < 331 do
Read(Buffer, 1);
Write(F2, Buffer);
finally
Free;
end;
end;
end;


Ругается Access violation at address... на строке:
Код

with OldFile do

smile

Автор: Chyslyvchyk 6.12.2004, 12:30
Ошибка найдена, нужно было написать:
Код

OldFile := TFileStream.Create('C:\MyFileName.DAT', fmOpenRead);


Вопрос следующий: как записать то, что считалось в другой файл?

Автор: <Spawn> 6.12.2004, 17:44
Цитата
Ошибка найдена, нужно было написать:

Ага, я просто оЧеПятался.

Ответ смотри в
http://forum.vingrad.ru/index.php?showtopic=36442

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)