Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.11;
Скачать: 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 вся ветка

Текущий архив: 2004.04.11;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.031 c
6-1076265604
человек в сети
2004-02-08 21:40
2004.04.11
подскажите пожалуйста книгу или доку по написанию чата для локалы


1-1082467091
siriusP
2004-04-20 17:18
2004.04.11
Вопрос по созданию компонент.


1-1082456276
Th
2004-04-20 14:17
2004.04.11
Delphi-реализация unix-ф-ции Crypt() (алгоритм DES)


6-1079593460
Vovanx
2004-03-18 10:04
2004.04.11
Есть ли смысл использовать IdTCPServer?


3-1079104653
ZSergey
2004-03-12 18:17
2004.04.11
Поддерживает ли ADO в запросах соединение (||) ?