Согласен ляпы есть.
Цитата:
2. Примеры довольно странные. форма, которая меняет цвет и размер, когда её передвигают. Почему вы рисуете на форме, а не на панели (или на PainiBox)? Ведь Delphi не для того, чтобы создавать приколы. Есть стандартные задачи: текстовый/графический редакторы, обработка файлов, базы данных, связь по сети, вычисления и графики, алгоритмы (сортировка и проч.). Для начала надо показать, как правильно делать интерфейс (меню, поля информации, кнопки управления) и какими средствами решать типовые задачи.
|
Пример с формой чтобы демонстрировать обработку сообщений наглядно, мы двигаем форму и вот оно! генерируется сообщение и обрабатывается.
Форма взята для простоты, думаю это не принципиально на чем рисовать.
Цитата:
3. Следите, пожалуйста, за русским языком. Напр., в фразе "недолжно быть" "не" пишется отдельно. Следите за логикой. Напр.: "компонент называется (является) объектом". Термин "объект" вы пояснили, но забыли пояснить термин "компонент". "Можно отлавливать нежелательные события": если они нежелательные, то зачем их отлавливать? Просто не ставить для них обработчики. Timer.Enable=false вы считаете недоступным, но не надо переводить буквально, просто таймер останавливается (перестают вызываться обработчики OnTimer). И т.д.
|
За проверку орфографии отвечают также и в издательстве перед печатью, наверное пропустили.
С компонентом да , не дал определение.
Цитата:
4. Анг. язык. Почему вы использовали 'drug', что означает "лекарство, наркотик"? "Перетащить и бросить" это Drag&Drop. (При этом вы не рассказываете об автоматической схеме Drag&Drop - опять же, логика хромает).
|
не обратил внимание на это, надо будет исправить. Возможно да, надо было бы привести автоматической схеме Drag&Drop.
Цитата:
6. Насколько я понимаю, книга для новичков. Но вы довольно глубоко копнули, допустим, dll, messages, API. Вот вы привели код TApplication.CreateForm. Неужели новичок его поймёт? Я сам не стал разбираться.
|
Думаю на конкретных простых примерах новички смогут разобраться. И я это уже испробовал на многих студентах.
Цитата:
7. Ещё странная логика. Почему, если нет корней в квадратном уравнении, то надо аварийно закрывать программу (halt)? Почему не выдать сообщение "Корней нет, т.к. дискриминант отрицательный"?
Почему для сообщения вы используете то ShowMessage, то MessageDlg?
|
Уже увидел это когда отправил в печать. halt лишний. Насчет фразы "Дискриминант отрицательный" думаю это излишне, достаточно просто "Корней нет".
Цитата:
8. Визуальные компоненты на палитре не называются Edit1, Button1, называйте их TButton или Button.
|
Это сделано для упрощения, но замечание правильное.
9. То, что выбрана Delphi7 это хорошо (т.к. если использовать XE5, то лучше переходить на FireMonkey), но используйте реалии сегодняшнего дня: во-первых, CLX вы не сможете использовать (как я только что указал, для кроссплатформенных систем используется FireMonkey), во-вторых, старые hlp-файлы справки новые Windows по умолчанию не поддерживают, так что надо было бы указать как решать эту проблему.
Цитата:
Общий совет такой: если вы приводите свой вариант, то намекните, что существуют и другие решения. Напр. if CheckBox.Checked=T then Timer.Enable:= T else Timer.Enable:= F можно было упростить:
Timer.Enable:= CheckBox.Checked.
Почему вы пишете if L= true then? Это вы у Сишников насмотрелись? Можно писать покороче: if L then (L - логическое выражение).
|
Это тоже уже пофиксил.
Цитата:
Есть ещё куча замечаний, но рука устала писать.
|
Спасибо за замечания, я собираюсь сделать новую верисю книжки, тщательно пересмотрю код, и учту все замечания.