В: Может ли Borland Pascal использовать статические переменные с размером более чем 64 килобайта? О: Нет! В: Вы говорите *статические* переменные. Неужели есть что-то еще, с чем можно работать? О: Да, смотри ниже одно из решений проблемы. Можете не тратить время на чтение следующего текста, все равно это не работает, можете смело скроллировать вниз. В: Поможет разделение большого массива на несколько маленьких (все элементы меньше чем 64k, но в сумме больше чем 64k)? О: Нет! В: Поможет объявление нескольких переменных в модуле? О: Нет! В: Поможет объявление чего-либо в секции реализации модуля? О: Нет! В: Поможет использование защищенного режима Borland Pascal 7? A: Нет! В: Вы уверены?? О: Да!! В: Почему?? О: Во-первых, все программы, созданные на Borland Pascal, для любых переменных используют только один сегмент данных, во-вторых, процессоры Intel 80xxx ограничивают размер сегмена 64 килобайтами. В: Это глупо!! О: Скажите это Borland!! (Или Intel, ...или обоим). В: Есть ли выход из тупика? О: Да! Возможны два решения: 1) не используйте *СТАТИЧЕСКИЕ* переменные для хранения данных большого размера. В итоге это позволит разместить более чем 64k данных, но весь массив данных в 64k не поместится, таким образом вы его поделите на несколько частей, что не является решением проблемы. Сделайте переменные динамическими.
2) используйте другой компилятор: есть несколько доступных компиляторов языка Pascal, которые более-менее Borland-совместимые и не имеют таких ограничений (они 32-битные).
В: Почему Borland Pascal не имеет 32-битного компилятора? О: Да, он весьма древний. Сообщите Borland, что вы хотите новую версию. В: Что такое не-статическая память? О: Для примера Куча, XMS, EMS, ... Куча доступна непосредственно, для XMS необходим драйвер (himem.sys), для EMS тоже (HIMEM.SYS + EMM386.EXE) и он обычно доступен не на всех компьютерах, так что лучше использовать XMS вместо EMS. В: Что такое Куча? О: Куча - вся свободная память ниже 640-килобайтной границы в режиме реального времени, в защищенном режиме (доступном только в Borland Pascal 7) - вся свободная память ниже 16-мегабайт (обычно *ВСЯ* свободная память, но мы здесь говорим о Borland Pascal). В: Каким образом можно воспользоваться Кучей? О: Доступ к памяти Кучи возможен только с помощью указателей. Посмотрите на этот пример, вы можете использовать эту технологию в ваших программах:
type arr = array [1..30000] of longint; { это ваши данные } arrptr = ^arr; { это указатель на данные } var data : arrptr; { это переменная, содержащая указатель } begin if memavail < sizeof(arr) then halt; { проверяем наличие доступной памяти } new (data); { распределяем память } for i := 1 to 30000 do data^[i]:=0; { используем ее, обратите здесь внимание на символ ^ !! } dispose (data); { освобождаем память } end.