О установке дополнительного жесткого диска, программа поиска каталога в FoxPro, рост объема файлов в PageMaker
PC Magazine/RE logo
(С) СК Пресс 3/96
PC Magazine, September 26, 1995, p. 288 15/15

Приемы и способы повышения производительности


Проблема с дисками

Недавно я приобрел новый жесткий диск с интерфейсом IDE, чтобы установить его в качестве второго накопителя в своем компьютере. Во избежание возможной несовместимости я заранее убедился в том, что новый диск того же изготовителя, что и старый. Тем не менее, несмотря на часы, проведенные в переговорах по телефону со службой технического обслуживания, я так и не добился правильного функционирования нового диска в качестве вторичного при том, чтобы старый оставалс основным. Чтобы записать 1 Мбайт данных на новый накопитель с исходного диска, требуется целый час, но менее минуты, чтобы записать те же данные обратно.

Один из мастеров предложил сделать исходный накопитель вторичным, а новый - основным, но я боюсь потерять при этом гарантию на свой почти новый компьютер. У меня нет никакой документации на первый накопитель, и я не решаюсь отсоединять его, чтобы получить доступ к перемычкам.

Прав ли я, беспокоясь о гарантии, и не думаете ли вы, что перестановка перемычек на исходном накопителе поможет решить проблему? Мне кажется, я вправе рассчитывать на совместную работу двух накопителей одного изготовителя.

Сайрус Дж. Стоу, Конайерс, шт. Джорджия

ОТ РЕДАКЦИИ

Конечно, следует ожидать, что эти два накопител будут работать вместе, но, налаживая свою систему, вы, вероятно, излишне осторожны.

Прежде всего вы должны связаться с изготовителями вашей компьютерной системы. Они не только скажут, как вам нужно установить перемычки, но, конечно, смогут точно объяснить, что можно и чего нельзя делать с системой, чтобы не лишиться гарантии. (Вы должны были получить такую информацию в печатном виде вместе с системой, но никогда не повредит уточнить детали.) Я очень удивлюсь, если демонтаж жесткого диска или перестановка перемычек повлияют на гарантию, но опять-таки хуже не будет, если вы спросите.

Действительно, очень вероятно, что источником ваших проблем является неправильное положение перемычек исходного накопителя. IDE-накопитель может быть установлен и как основной (master), и как вторичный (slave), причем основной обеспечивает функции управления для обоих накопителей.

Правда, пользователи часто забывают, что многие IDE-накопители имеют не два, а три различных варианта установки. Установке накопителя в качестве вторичного часто соответствуют два отдельных варианта установки основного накопителя. Один вариант используется дл основного накопителя в системе с единственным НЖМД, а другой - для основного накопителя при наличии вторичного. Я подозреваю, что в данном случае ваш исходный накопитель установлен как единственный, а теперь требуется сконфигурировать его как основной со вторичным. Если у вас нет документации на исходный накопитель, вы можете получить сведения об установке перемычек от изготовителя. Чтобы сообщать такую информацию, многие изготовители имеют электронные доски объявлений и факсы с ответом по запросу.

Если вы не решаетесь произвести изменени самостоятельно, изготовитель, скорее всего, порекомендует квалифицированную ремонтную службу находящуюся в вашем регионе, которая изменит конфигурацию. Хотя за эту услугу придется заплатить некоторую сумму, в результате вы получите работоспособный накопитель, которому не потребуетс целого часа для копирования мегабайта данных.

Алфред Пур

Базы данных - проверка существования каталога

Для многих моих приложений баз данных мне нужно точно знать, существует ли каталог. Есть ли способ определить это из моих программ в FoxPro for Windows?

Сара Шаффер, Атланта, шт. Джорджия

ОТ РЕДАКЦИИ

Я знаю несколько различных способов определени существования каталога. Для поиска каталога некоторые пользуются функцией ADIR() пакета FoxPro, другие - функцией FILE() для проверки наличия в каталоге файла NUL (в соответствии с DOS NUL-устройство есть в каждом каталоге, но в некоторых сетях использование этого метода не дает устойчивых результатов). Все эти способы не всегда работают надежно.

Лучшим и самым надежным способом является функци Isdir. В основе этой функции очень логичный подход к проверке наличия каталога. Она организует обработчик ошибки и затем пытается перейти в искомый каталог, используя команду SET DEFAULT TO. Если попытка удается, каталог должен существовать, если же обработчик ошибки переключился, каталога нет.

Вот как работает функция Isdir. Сначала мы сохраним текущий каталог и текущий обработчик в FoxPro, чтобы восстановить их позже. Затем определим переменную lError, которая будет указывать, произошла ли ошибка при попытке переключения каталога. Мы присвоим ей начальное значение False. Следующим шагом создадим новый обработчик ошибки, который установит значение переменной lError равным .T., если ошибка возникнет. Наконец, мы попытаемся перейти к искомому каталогу, используя в FoxPro команду SET DEFAULT TO. Если команда сработает, переменная lError сохранит значение False. В противном случае FoxPro вызовет обработчик ошибки, и переменная lError получит значение True. Это будет означать, что заданный каталог не существует или неправильно записана строка, передаваемая функции.

Как только станет известно, возникла ли ошибка, мы восстановим исходный каталог и обработчик ошибки и передадим значение .T., если ошибки не было, или .F. в противном случае.

Для определения наличия искомого каталога в программах FoxPro можно воспользоваться приведенным вариантом функции Isdir.
****************************************************************** * FUNCTION Isdir(cDir) FoxPro for Windows2. 6 * Выдает .T., если переданный параметр - действительно существующий каталог, * причем существование каталога определяется как допустимость для команды * SET DEFAULT TO ****************************************************************** FUNCTION Isdir PARAMETER cDir PRIVATE lError, cOldErr, cOldDefa cOldDefa = SYS(5)+SYS(2003) && Сохранить исходную установку по умолчанию cOldErr = ON("ERROR") && Сохранить исходное значение обработчика ошибки lError = .F. && Установить значение False ON ERROR lError = .T. && Установить значение обработчика ошибки * * Попытка установить отсутствие каталога. Если каталог не существует * или переданный параметр вызывает ошибку, обработчик ошибки присвоит * lError значение .T. В противном случае, каталог должен существовать * SET DEFAULT TO (cDir) && Попытка установить отсутствие каталога ON ERROR &cOldErr && Восстановление исходного состояни && обработчика ошибки SET DEFAULT TO (cOldDefa) && Восстановление исходного состояни && по умолчанию RETURN IIF(lError, .F., .T.) && Вывод .T., если нет ошибки
Сэл Риккарди

Графика - рост объема файлов в PageMaker

Чтобы поместить в подготавливаемый мной с помощью пакета PageMaker еженедельный отчет от 12 до 18 графиков из Excel 5.0 с их последующей компоновкой, пользуюсь монтажным буфером (Clipboard) из Windows 3.1. После завершения отчета наименьшая длина файла составляет 3 Мбайт, а некоторые файлы разрастаются до 8 Мбайт. Странно, но, даже если я удаляю все содержимое документа, размер файла остается примерно тем же! Это создает настоящий дефицит памяти, поскольку мне необходимо хранить копию документа на диске. Как это получается? Не объясняется ли это связями, которые поддерживаются для графиков? Но главное, что мне сделать, чтобы решить эту проблему?

Роберт Хейлили, Гонконг

ОТ РЕДАКЦИИ

Как вы и предполагаете, при пользовании командами Paste Link или Paste Special из меню Edit в PageMaker в действие приводится механизм динамической компоновки объектов. Команда Paste Link устанавливает связь с исходной электронной таблицей, а Paste Special либо создает связь, либо встраивает данные электронной таблицы в ваш документ. Технология OLE имеет много достоинств, не последним из которых являетс возможность редактировать данные из импортированной прикладной программы путем вызова самой этой программы. Если файл связан (но не встроен), любые вводимые вами изменения автоматически переносятся в оригинал.

Однако, несмотря на такие положительные свойства технологии OLE, ее накладные расходы довольно велики. Я провел неформальные испытания и подготовил в PageMaker несколько одинаковых документов. Материал, содержащий связи OLE с электронными таблицами Excel, был на 30% длиннее по сравнению с созданным с помощью стандартных для PageMaker фильтров импорта. А когда встроенный OLE-объект был помещен в документ (командой Paste Special), файл увеличился в четыре раза.

Вместо вставки (paste-linking), или встраивания, электронных таблиц вам следует либо пользоватьс непосредственно командой Paste, либо импортировать необходимые данные электронных таблиц командой Place из меню File. Мне кажется, удобнее воспользоватьс командой Place, потому что процесс компоновки с помощью фильтра импорта пакета Excel в PageMaker почти столь же универсален, как и при использовании монтажного буфера Clipboard в Windows. Clipboard, например, позволяет импортировать большую электронную таблицу по частям, путем выделения нужных ячеек в Excel. Но можно выполнить почти такую же операцию, если в электронной таблице Excel создать сначала именованную область и определить затем такую же область в фильтре импорта Excel в PageMaker. Еще удобней то, что PageMaker сохраняет собственные связи с файлами команды Place. И так же, как в методе OLE, можно пользоваться связями PageMaker для автоматического обновления данных из хранящихся вовне электронных таблиц всякий раз, когда изменяется исходный файл.

Есть объяснимая причина, по которой файлы вашего документа не становятся меньше. PageMaker ускоряет операцию Save (Сохранить), просто добавляя сделанные вами изменения к файловой структуре. В результате размер вашего материала действительно может возрасти после "удаления" объекта, поскольку PageMaker помимо добавления команды удаления этого объекта больше ничего не делает. Если вы хотите сократить размер файла, вместо Save пользуйтесь командой Save As (Сохранить как). Команда Save As сжимает публикуемый материал до минимума, сохраняя только самые последние данные. При выборе пункта Smaller (Меньше) в диалоговом окне Preferences (Настройка) выполнение команды Save также сопровождается сжатием публикации.

Луиза Симоне