Форум: "Основная";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
ВнизНетипизированные файлы Найти похожие ветки
← →
Anton (2004-03-23 13:49) [0]Подскажите , пожалуйста!!!
У меня есть нетипизированный(бинарный) файл. В каждых 2 байтах находится число. Мне необходимо извлечь из него все числа. Очень нужен точный код, а особенно как правильно написать процедурки Reset и BlockRead. И еще вопрос , можно ли и как именно полученные данные привести к восьмеричному формату. Второй вопрос не так важен. мой код такой :
var
a: Word;
f: File;
begin
AssignFile(f, "...");
Reset(f, 2);
while not EOF(f) do
BlockRead(f, a, SizeOf(a));
CloseFile(f);
end;
При таком коде мне выдаются неправильные данные.
Спасибо за любую помощь.
← →
Johnmen © (2004-03-23 13:53) [1]Reset(f, 1);
← →
Romkin © (2004-03-23 13:56) [2]А почему его нельзя просто объявить как file of word? Из чего следует, что он нетипизированный?
← →
Zacho © (2004-03-23 13:57) [3]А что такое "восьмеричный формат" ??? Или имеется в виду отображение чисел в восьмеричной системе счисления ?
← →
Anatoly Podgoretsky © (2004-03-23 14:02) [4]В данном случае ты затираешь память, поскольку запрашиваешь 4 байта, а переменная только 2. Правильнее будет
Reset(f, SizeOf(a));
while not EOF(f) do
BlockRead(f, a, 1);
← →
Digitman © (2004-03-23 14:34) [5]писал навскидку, проверь
var
srcfs, dstfs: TFilestream;
i, WordNum: Integer;
NextWord: Word;
OctStr: String;
...
procedure WordToOct(AWord: Word; Buffer: PChar);
var
i: Integer;
b: Byte;
begin
for i:= 5 downto 0 do
begin
Buffer[i] := Char(AWord and 7 + Ord("0"));
AWord := AWord shr 3;
end;
end;
...
SetLength(OctStr, 8);
OctStr[7] := #10;
OctStr[8] := #13;
srcfs := TFilestream.Create("myfile.bin", fmOpenRead);
dstfs := TFilestream.Create("myfile.oct", fmCreate);
try
WordNum := fs.Size shr 1;
for i:= 1 to WordNum do
begin
NextWord := srcfs.ReadBuffer(NextWord, SizeOf(NextWord));
WordToOct(NextWord, @OctStr[1]);
dstfs.WriteBuffer(OctStr[1], 8);
end;
finally
srcfs.Free;
dstfs.Free;
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.041 c