Вниз
Скачать: CL | DM;

Нетипизированные файлы   Найти похожие ветки 

 
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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.026 c
14-1082448342
Sirus
2004-04-20 12:05
2004.04.11
Установк своей программы...


7-1080579089
DelphiN!
2004-03-29 20:51
2004.04.11
Получит имя текущего пользователя и его пароль


4-1079956507
Yourik
2004-03-22 14:55
2004.04.11
Криптография, CryptGenKey(), CryptEncrypt()... etc


1-1080214459
EvgeniyR
2004-03-25 14:34
2004.04.11
MDI


14-1081863818
Dimerol
2004-04-13 17:43
2004.04.11
Proftpd and symbolic links




   Наверх