...
...

Ответы на вопросы

Ответы на вопросы

Очень часто читатели задают мне разные вопросы, пользуясь для этого форумом газеты (www.nestor.minsk.by/kg/help). Также я получаю письма, посланные ими в редакцию на мое имя. Иногда я отвечаю, иногда нет. Зависит это от многих факторов: от наличия у меня свободного времени, от текущего расположения звезд, от желания общаться с людьми, от самоочевидности заданного вопроса (человек явно ленится подумать) или же, напротив, от чрезмерной сложности поднятой им в своем вопросе темы (за пять минут не ответишь).

Порой забросишь такое неотвеченное письмо в дальнюю папку рабочего стола и забудешь о нем.
По прошествии некоторого времени натыкаюсь на него вновь и говорю сам себе: Ха! да это же просто! Вот что надо было сказать. А поезд-то уже ушел. Дабы информация, возможно, полезная и остальным читателям, не пропадала даром, я решил завести новую рубрику. Она и будет посвящена вопросам, не получившим от меня в свое время ответов.
Давайте для начала я вам расскажу о том, как надо и как не надо задавать вопросы.
Зачастую вопросы читателей выглядят примерно так (приведу оригинальное письмо с сохранением орфографии):

"Напиши плиз еще про Delphi, а то мне скоро курсовую писать на виз. Пасцале! Проблема в том, что на парах аб нем слишком нудно расказывают. Поэтому я слишком мало procedur & function-s знаю".

Прочитав такой вопрос, сначала ржешь как конь, а потом задумываешься. Ну, действительно, человек наверняка пытался что-то выяснить, но подобная формулировка заданного вопроса сводит всю его попытку на нет.
Уважаемые авторы вопросов, поймите, я не выпендриваюсь и не пытаюсь над вами посмеяться. При такой подаче вопроса я должен вам пересказать _весь_ курс, читаемый вам в институте, и при этом еще развлекать вас по мере сил, так как "на парах аб нем слишком нудно расказывают"!!! Зачем вы задаете подобные глобальные вопросы, в общем-то, понятно, ну, а мне-то к чему так напрягаться?
Апофеозом среди подобных вопросов, на мой взгляд, является фраза одного моего приятеля, хоть и далекого от компьютерной сферы деятельности, но, так сказать, "сочувствующего". Я с ним не виделся где-то с полгода. После обычного в таких случаях приветствия он и выдал, с заинтересованным ожиданием на лице, этот перл. Оцените: "Ну и что новенького за последнее время появилось в компьютерном мире? А то я как-то за этим не следил..." Ну и что бы вы на это ответили? Я сказал: "Пошли, я тут знаю кафешку поблизости, она всю ночь работает. Мой рассказ будет долгим, так что там нам будет удобнее, чем на улице..."
Задавая вопрос, по возможности его конкретизируйте. Сам автор цитируемого мной послания о Delphi позже все же определился.

"Напиши например какие книги кроме Фаронова можно (нужно) почитать начинающиму программировать на виз. Пасцале. И еще, можно ли редактировать .bat и .ini файлы при помощи Delphi. Если можно то как (через Memo и Edit не получается)".

Чувствуете разницу? По крайней мере, я хоть знаю о том, что человек читал Фаронова и представляет, что в природе есть такой компонент, как TMemo.
И ответить на этот вопрос легко:
Делаешь все правильно, редактировать их действительно можно с помощью Memo. Читать или сохранять файлы следует через:
memo.Lines.SaveToFile ("memo.txt")
memo.Lines.LoadFromFile ("memo.txt");
Если используешь RichEdit, не забудь указать, что сохранять надо "Plain Text".
Из книжек по Delphi читать следует:
"Руководство разработчика Delphi6" от Стива Тейксейра и Ксавье Пачеко. Бумажная книжка довольно дорогая, но в инете есть Руководство по Delphi5 тех же авторов. Оно подойдет и к Delphi6, и к Delphi7.
Также неплохо пишет компания, состоящая из П.Дарахвелидзе, Е.Маркова и О.Котенок (в самых разных комбинациях из этих трех авторов).
Когда "покрутеешь" и "обматереешь", можешь приступать к творчеству Н.Елмановой и С.Трепалина. Пишут они несколько заумно, зато поднимают вопросы, по которым вообще очень трудно найти какую-либо литературу.
А вообще, если вы только начинаете разбираться с Delphi, завязывайте c ней и переходите на VB.NET или "Си-шарп" (последнее предпочтительнее). Платформа NET намного более перспективна. Говорю я вам это как человек, начинавший изучать Delphi с Turbo-Pascal 5.5. Он как раз тогда входил в моду как новинка в области программирования.
При этом спрашивать у меня, что это за такие "memo.Lines", бессмысленно. Ответа на подобный вопрос не будет. Не потому, что я этого не знаю, а потому, что вы как автор вопроса должны показать, что возиться с вами вообще имеет смысл.
Поэтому вам придется об этом узнать самостоятельно, поработав своей собственной головой. Всю необходимую для этого информацию я вам дал, разбирайтесь дальше сами. Наткнетесь опять на что-нибудь непонятное — спрашивайте, но выполнять за вас ваши институтские контрольные работы я не намерен. Наймите себе репетитора.

[История в тему] Как-то известного мага Гурджиева упрекнули за то, что со своих будущих учеников он берет довольно крупный (по тем временам) вступительный взнос в 1000 рублей. Он на это ответил: "Я ничему не могу научить человека, который не может для _действительно_ нужного_ ему_ дела_ достать 1000 рублей. Мне жалко и его, и своего времени..."

Разумеется, все вышесказанное не касается простых вопросов типа "А как мне новый винчестер к компу присоединить?" В этом случае вам, конечно, подскажут.
Для подобных вопросов существует лишь одно правило: не надо спрашивать о таких вещах, пользуясь примерно таким сленгом: "А какие дрова лучше всего подходят к моему венику???"
Уважайте специалистов, к которым вы обращаетесь за помощью. Они работают с драйверами и разбираются с _винчестерами, а не рубят "дрова" и не вяжут "веники". Подобный жаргон не сделает вас специалистом в их глазах, так как ваш уровень хорошо видно по самому заданному вами вопросу.
Разговаривая с людьми, старайтесь пользоваться общечеловеческим языком. Ну и, разумеется, конкретизируйте по возможности свою проблему. Письмо о том, что у вас жесткий диск сломался, ничем не поможет специалисту понять суть вашей проблемы. Опишите ваш компьютер, модель вашего диска, что было до поломки, что происходит теперь. В этом случае получить ответ у вас шансов намного больше.
Итак, хватит лирики, поехали:

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

Это означает, что у вас плохой CD-ROM. Гонка производителей за высокими скоростями считывания привела к снижению надежности CD-ROM как устройства. Особенно это касается CD-ROM-драйвов всевозможных "левых" производителей. Я сам за последние пять-десять лет поменял последовательно:
Nec 4x — до сих пор работает, но устарел.
Mitsumi CD-RW 2/10 — до сих пор работает, но устарел.
Pioneer 12x — вышел из строя по механике.
Teac-524 — вышел из строя по механике.
Panasonic CR-594 — вышел из строя, отремонтировал, поставил жене, он там у нее и продолжает глючить.
В данный момент использую Sony CD/RW CRX175A1 и жду, когда и он накроется.
Обычно глюки с CD-ROM начинаются примерно через год активной работы или через пару лет использования устройства время от времени. Оправдывает такое положение дел лишь постоянно снижающаяся стоимость CD-ROM-устройств. Свой Mitsumi я, как помнится, покупал примерно за $300. Текущий мой CD/RW Sony обошелся мне всего около $70.
Ломаются модели _всех_ фирм-производителей. "Приличные" CD-ROM просто живут подольше. Для увеличения продолжительности их работы рекомендую пользоваться программами — "замедлителями" скорости CD-ROM. Их полно в Интернете. Забавно: CD-ROM — единственное устройство в компьютере, которое надо не "разгонять", а "замедлять".
Синий экран Windows у вас появляется из-за того, что вместе с самим драйвом "сбойнули" и его драйвера. Так как они работают на достаточно низком уровне операционной системы, ну-у-у-у, типа как бы в подвале дома, то, когда их "лихорадит", вместе с ними трясется все вышестоящее "здание" операционной системы.
Новые окна самопроизвольно раскрываются из-за того, что очень часто при сбое драйверов устройство как бы временно исчезает из системы. Если посмотреть в этот момент в список устройств, то мы увидим, что CD-ROM-драйва среди них нет. Чуть позже Windows обнаруживает его снова, повторно устанавливает и запускает с диска программу autorun.inf (если эта возможность у вас не отключена). Autorun в процессе запуска опять завешивает драйв, и цикл повторяется.
Дополнительно свою лепту в описанный процесс вносит тот факт, что у большинства компакт-дисков корневая папка (в которой и лежит autorun.inf) физически находится ближе к краю диска. А это та область, которая, при стремлении пиратов запихать как можно больше софта на один диск, возглавляет список мест, которые могут оказаться на нем нечитаемыми.
"Внешний" край любого CD-диска больше "болтает", если диск плохо отцентрирован. Особенно если этот самый диск писался не на вашем драйве. Также именно там находится область плохого чтения, если диск записан с объемом данных, превышающим положенный по спецификации. Располагается она там из-за того, что CD-диски пишутся "от центра к краю".
Вот несчастному autorun.inf из-за его местожительства по жизни и не везет. В подобной ситуации рекомендую просто отключить автозапуск у компакт-дисков.
Windows у вас "замирает", по всей видимости, из-за того, что ваш CD-ROM работает в так называемом режиме PIO. Переключитесь в режим DMA (UDMA), и все у вас побежит куда как повеселей.
Под Windows XP это можно сделать с помощью Диспетчер устройств -> IDE ATA/ATAPI Controllers и дальше или Primary IDE Channel, или Secondary IDE Channel в зависимости от того, где у вас находится CD-ROM. Щелкните по иконке нужного канала, на закладке Дополнительные параметры, посмотрите, в каком режиме у вас работает устройство. Если Только PIO, установите DMA если доступно. Заодно обратите внимание, а не на одном ли Channel (Primary или Secondary) у вас располагаются CD-ROM и жесткий диск. Если на одном, то чуть ниже я вам расскажу, как это исправить.
Под Windows 98 все точно так же, только смотреть надо Мой Компьютер -> Свойства -> Устройство чтения компакт диска -> Свойства -> Настройка. Видите там галочку DMA? Если она включена, то DMA также включено, если нет — DMA выключено, и используется PIO.
Для того чтобы убедиться в том, что DMA включилось (а это еще не факт!), попробуйте скопировать какой-либо большой файл с диска на винчестер в обоих режимах (DMA и PIO) и засеките время. В качестве такого файла хорошо подойдет любой MPEG-видеофильм. В режиме DMA скорость копирования должна быть значительно выше, чем в режиме PIO.
Если же скорость копирования у вас примерно одинакова, отвинчиваем корпус компьютера и заглядываем внутрь (пользователи XP проверили этот вариант чуть выше, когда изучали свои Channel'и).
У вас случайно жесткий диск и CD-ROM не к одному IDE-кабелю подключены? IDE-кабель — это такая широкая лента. Начинается она на материнской плате, а вторым концом уходит в жесткий диск или в CD-ROM. У вас именно "ИЛИ" в CD-ROM, "ИЛИ" в жесткий диск, или же "И" в жесткий диск, "И" в CD-ROM? Если у вас имеется один кабель, обслуживающий оба устройства, то отправляетесь в магазин и покупаете еще один ATA-133 IDE-кабель (так и спросите у продавца). Стоит он около ста рублей (российских — прим. ред.). До сих пор попадаются и старые кабели ATA-33. Визуально они отличаются тем, что ATA-133 кабель имеет в два раза больше проводов, чем ATA-33 при той же самой ширине кабеля. Отличить их также можно по цене. ATA-33 кабель стоит, как правило, рублей 50. Берите именно ATA-133. Если дома у вас остался ATA-33 кабель, купите два — замените домашний.
Придя домой, вытаскиваете разъем имеющегося кабеля из CD-ROM (оставляя его в жестком диске). Отслеживаете кабель до материнской платы. Видите, рядом с тем гнездом, куда он воткнут, есть еще одно точно такое же гнездо? Втыкаете в него свой новый кабель. Одним его концом в разъем на плате, а вторым — в разъем CD-ROM, тот самый, из которого вы раньше выдернули наш старый кабель на два устройства.
Неправильно воткнуть кабель нельзя, так как разъем на одной стороне имеет направляющую, которая должна входить в соответствующий паз на гнезде. В материнскую плату втыкается тот конец кабеля, на котором находится _один_ разъем, а в CD-ROM — тот, ближе к краю которого расположено _два_ разъема. Если гнездо вашего CD-ROM'а не имеет направляющего паза, втыкайте в него кабель таким образом, чтобы красная (зеленая) полоса на кабеле была ближе к разъему питания. Цветной полоской маркируется первый контакт разъема, так что дополнительно можно убедиться в правильности подключения кабеля, посмотрев цифровую маркировку контактов на разъеме CD-ROM.
Ну вот и вся операция. Стартуем Windows и смотрим, не помогла ли она нам получить работающий DMA. Опять копируем файлы, опять засекаем время.
Если же ваш CD-ROM теперь не видится Windows вообще, посмотрите, не горит ли на нем _постоянно_ лампочка чтения диска. Если это так, значит, вам все-таки удалось перепутать кабель. Воткните его наоборот (цветной полоской в другую сторону разъема) и попробуйте загрузиться снова.
Если лампочка не горит, а CD-ROM, тем не менее, отсутствует, идем в BIOS материнской платы. Заходим в меню Integrated Peripherals. Отыскиваем пункты OnChip IDE Channel0 и OnChip IDE Channel1. Напротив них [Enabled] стоит или [Disabled]? Если [Disabled], устанавливаем [Enabled].
Заодно, раз уж мы добрались до BIOS, давайте глянем, что у нас написано в пунктах Primary Master UDMA, Primary Slave UDMA, Secondary Master UDMA, Secondary Slave UDMA. Везде должно быть [AUTO]. Выходим из BIOS с сохранением изменений, после того как память пересчиталась, повторно в него заходим.
Теперь идем в меню Standard CMOS Feature. Смотрим, появился ли в списке IDE-устройств наш CD-ROM или нет? Если нет, уберите новый кабель и воткните все так, как оно было до вашего вмешательства. CD-ROM появился! Берете новый кабель и идете обратно в магазин. Пускай они вам там покажут, как он у них работает. Нет, не "наш техник сейчас проверит...", а "я сам пойду и посмотрю, что и как он там у вас проверяет!" Даже если вы не правы, и кабель рабочий, так, на худой конец, пронаблюдаете, как нужно правильно его подключать. Не зря в народе говорят: лучше один раз увидеть, чем пять статей Германа Иванова прочитать.
Итак, кабель вы подключили, но запустить DMA вам это не помогло. Вопрос сложный, надо разбираться с драйверами. Пишите в форум "Hardware" газеты. Кто-нибудь из его посетителей уже наверняка "кувыркался" с вашей материнской платой и что-нибудь вам наверняка подскажет.

У меня в компьютере установлена видеокарта, и она глючит. Когда я прошу помощи в форуме, все просят меня назвать ее фирму-изготовителя и модель, а я их не знаю. Подскажите, как мне выяснить название и модель моего устройства.

Название используемых в вашем компьютере устройств можно выяснить довольно легко. Если вы работаете в Windows XP или в Windows 2000, то щелкните правой кнопкой мыши по значку Мой компьютер, в выпавшем контекстном меню выберите Управление. Дальше в левом дереве идете в Служебные устройства -> Диспетчер устройств. После того как вы выберете этот пункт, в правой части экрана приложения появится список всех ваших устройств, разбитый по категориям. Выберите нужное вам устройство и щелкните по его иконке двойным щелчком. Появится новое окно, изучив которое, можно довольно много узнать об искомой "железке".
Также под этими операционными системами можно проделать еще и такую хитрую штуку. Давайте займемся программированием. Не бойтесь — это не страшно. Откройте Блокнот и наберите в нем следующий текст:

<HTA:APPLICATION>
<body>
<script language="VBScript">
Set locator = CreateObject ("WbemScripting.SWbemLocator")
set objService = locator.ConnectServer ("localhost")
strQuery = "SELECT * FROM Win32_PNPEntity"
set wmi = objService.ExecQuery (strQuery)
document.write "<code> "
for each obj in wmi
document.write "<ul> "
document.write "<dt> <b> " & obj.Description & "</b> "
document.write "<dd> Производитель:" & obj.Manufacturer
document.write "<dd> Код устройства:" & obj.PNPDeviceID
document.write "</ul> "
next
document.write "</code> "
</script>
</body>

Сохраните полученный файл как Текстовый документ (.txt) с именем файла test.hta. Если щелкнуть по ярлычку этого вновь созданного файла, то перед вами откроется список всех работающих на вашем компьютере PnP-устройств.
Найдите среди них ваше искомое устройство. С помощью этой несложной программки вы дополнительно можете посмотреть еще и такой важный параметр, как HardwareID вашего устройства. С помощью HardwareID можно более точно идентифицировать это устройство. Помимо "железок" в этом списке будут присутствовать также и некоторые программы. Поэтому не удивляйтесь, встретив среди "устройств", например, Acronis TrueImage.
Если же вы работаете под Windows 98, то... установите Windows XP! Я, конечно, шучу, и под Windows 98 можно также легко посмотреть список ваших устройств. Щелкните по иконке Мой компьютер правой кнопкой мыши и выберите Свойства. Вы попадете в список устройств, работа с которым, в принципе, не особенно отличается от только что описанного мной Диспетчера устройств Windows XP.
Впрочем, в любой шутке, как известно, есть доля шутки. Windows XP действительно значительно более грамотная операционная система, и я всячески рекомендую вам на нее перейти. Кстати, моя программка, выводящая список служб, работать под Windows 98 не будет. Использованный мной язык программирования Windows 98 поддерживает, а вот такого объекта, как "WbemScripting.SWbemLocator" в ней нет. Пакет WMI на Windows 98 нужно устанавливать отдельно, а в Windows XP он входит в дистрибутив и ставится автоматически.

А что это вы за язык программирования использовали в предыдущем ответе? Я ведь не устанавливал на мой компьютер никаких языков программирования, так откуда взялся этот?

Это скриптовый язык VBScript, встраиваемый во все современные версии Windows. Для вывода информации на экран я воспользовался способностью Internet Explorer создавать так называемые web-приложения. Читатели, знакомые с HTML, легко опознают в коде программы обычную веб-страничку.
Действительно, это она и есть. Единственное существенное отличие этой программы от html-страницы — это более слабый контроль за безопасностью используемого в ней кода и отсутствие на экране... самого Internet Explorer!
Программа выглядит как обычное "взрослое" приложение, написанное с помощью обычного языка программирования.
Дабы привлечь ваше внимание к этой возможности IE, дополнительно сообщу, что при написании веб-приложений можно использовать пакет ActivePerl и таким образом свободно работать с этим языком и через него с сетью, регулярными выражениями и Windows API.
А насчет того, что вы никаких языков программирования не устанавливали, так в Windows вообще есть много возможностей, о которых мало кто знает.
Именно этим объясняется большой размер ее дистрибутива. Надеюсь, со временем мы с вами разберемся с наиболее интересными из них.

Герман Иванов


© Компьютерная газета

полезные ссылки
Аренда ноутбуков