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


Автор: Profx5016 3.7.2010, 02:21
Существует файл в котором записаны большие числа в шестнадцатиричном виде. Содержимое файла считывается с помощью функции READLN и массив переменных типа LONGWORD. Однако компилятор выдает ошибку Invalid Numeric Format хотя в 2007 все прекрасно работало. в чем причина? Код считывания приведен ниже.

Код

var f:textfile;
var s1:array [1..256] of LongWord;
begin
  assign(f,filename);
  reset(f);
  for i:=1 to 256 do read(f,s1[i]);
  closefile(f);                
end        



а другой код работает нормально:

Код

var f:textfile;
var s1:array [1..256] of Integer;
begin
  assign(f,filename);
  reset(f);
  for i:=1 to 256 do read(f,s1[i]);
  closefile(f);                
end        


Автор: RomanEEP 3.7.2010, 07:45
Зачем такого динозавра, как textfile использовать?
Воспользуйся TFileStream для считывания и HexToBin для конвертации

Автор: Profx5016 3.7.2010, 12:15
Проблема в том что файл текстовый и данные записанные в него при чтении Tfilestream представляют коды символов представленных чисел.
таким образм след. код дает значение в переменной r равное 50 вместо 2 (в файле записано число  200)

Код

var r:byte;
var f:tfilestream;
begin
f:=TFileStream.Create('1.txt',fmopenread);
f.Read(r,sizeof(r));
f.Free;
end;

Автор: RomanEEP 3.7.2010, 16:34
правильно, а раз данные текстовые, то и загружать их нужно куда - правильно, в строку,
а потом HexToBin или своей процедурой конверти в DWORD или куда тебе там надо.

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