Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.03.25;
Скачать: [xml.tar.bz2];

Вниз

Помогите!!!   Найти похожие ветки 

 
kronos   (2002-03-11 02:30) [0]

Помогите чайнику!!! Я недавно перешел с Pascal 7.0 на Delphi 6. В Pascal-евской программе я создал file of n (type n=record a:string[4]; b:longint end;). При чтении этого файла Delphi-йской прогой получается ерунда какая-то. Подскажите, как мне переконвертировать этот файл, чтобы он нормально заработал в Delphi-йской проге.


 
Adder   (2002-03-11 06:13) [1]

Прочитаем из Вашего файла пару записей :)
program Project1;
{$APPTYPE CONSOLE}
uses windows;
type
n= packed record // !!! и не надо "переконвертировать" :)
a:string[4];
b:longint;
end;
var
F:File Of n;
nn:n;
begin
AssignFile(F,"YourFile.xxx");
Reset(F);
Read(F,nn);
Writeln(nn.a," ",nn.b);
Read(F,nn);
Writeln(nn.a," ",nn.b);
CloseFile(F);
end.


 
tovSuhov   (2002-03-11 07:40) [2]

> Adder
Простите, что вмешиваюсь... Не разъясните ли мне, чем отличаются объявления "packed record" и "record" (просто про packed record первый раз услышал)


 
Anatoly Podgoretsky   (2002-03-11 07:44) [3]

В первом случае записиь "пакуется" так, что бы она занисала ровно столько байт, скольно нужно, а во втором случае столько байт, сколько компилятор посчитает нужным для оптимальной работы.

Слово packed существует еще с самых первых версий Паскаля.


 
panov   (2002-03-11 07:48) [4]

>tovSuhov © (11.03.02 07:40)
По умолчанию, значения в структурных типах выравниваются по границе слова или двойного слова для ускорения доступа к этим значениям.
При объявлении с использованием ключевого слова packed значения не выравниваются, что позволяет "упаковать" структуру.
Но при этом снижается скорость работы с данными структуры.


 
Adder   (2002-03-11 07:59) [5]

Отсутствием выравнивания :)
packed record из предыдущего примера займет ровно 9 байт (a=5 байт и b=4 байта)...
А record будет занимать 12 байт (выравнивание на границу двойного слова => "а" займет 8 байт вместо 5).
Насколько я помню, в BP7 record и array по умолчанию "packed" (могу ошибаться).

Есть еще вариант - в опциях компилятора снять флажок
Aligned record files

By default, the values in a structured type are aligned on word or double-word boundaries for faster access. When you declare a structured type, you can include the reserved word packed to implement compressed data storage.
For example,
type TNumbers = packed array[1..100] of Real;

Using packed slows data access and, in the case of a character array, affects type compatibility.



 
kronos   (2002-03-11 23:04) [6]

Люди, вы мне жизнь спасли!!! Огромное СПАСИБО :)))



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.03.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.006 c
3-80427
dmitryK
2002-02-22 15:46
2002.03.25
Ошибки ADO


1-80592
Hermit
2002-03-06 10:04
2002.03.25
Ищется дискета к книге


3-80385
kirill2000
2002-02-25 15:14
2002.03.25
New Table


3-80444
Esipenko
2002-02-25 12:41
2002.03.25
описание halcyon


3-80402
Eto
2002-02-26 10:52
2002.03.25
Подключение к Excel через BDE





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский