![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Соответствие типов Pascal DOS и Delphi 5 [D5, WinXP]
wrmj © (2005-06-21 12:53:00)Считываю данные из типизированного файла средствами Delphi. Файл сформирован DOS программой написанной на Turbo Pascal под DOS.
Формат файла известен используются типы Real и Integer.
Каким типам в Delphi они соответствуют ?
Предполаегаю что Real - Real48
а Integer - SmallInt
но у меня с применением этих типов идет ошибка при считывании.
Да и типизированный файл сформированный Turbo Pascal под Dos
начинать читать с 1 или 0 ?
wrmj (2005-06-22 10:08:00) [1]Да проблемма была в отсутствие packed, т.е. packed record вместо record. А в остальном все правильно:
Real(TP)-Real48(Delphi)
Integer(TP)-SmallInt(Delphi))
Всем спасибо.
vl_chel (2005-06-21 13:39:00) [2]Integer это псевдоним типа ShortInt в 7 Паскале
и LongInt в его 32 разрядной версии
аналогично String, но это может выставляться настройками компилятора либо в ShortString либо в AnsiString
Anatoly Podgoretsky (2005-06-21 13:26:00) [3]Безобразие, проблему сразу заложили, использовав не фундаментальные типы, а Real и Integer.
Думаю также проблемы и с выравниванием.
Вот так и устраивали проблему 2000
PVOzerski (2005-06-21 13:22:00) [4]2TUser:
насчет ShortInt - это 1-байтовый знаковый. 2-байтовый знаковый - SmallInt.
2wrmj:
там Record'ов нет? Если есть, сделай их packed или перенастрой выравнивание на 1.
jack128 (2005-06-21 13:03:00) [5]TUser © (21.06.05 13:01) [1]
теперь этот старый real называется Real48.
можно включить режим совместимости $REALCOMPATIBILITY ON
TUser (2005-06-21 13:01:00) [6]integer -> shortint (2 байта)
Real - зависит от версии Delphi. В ранних версиях он такой же как в ТР (кажется), теперь этот старый real называется Real48.