Показать сообщение отдельно
  #14  
Старый 25.02.2014, 23:42
AlexSku AlexSku вне форума
Специалист
 
Регистрация: 07.05.2007
Адрес: Москва
Сообщения: 884
Репутация: 21699
По умолчанию

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

2. Примеры довольно странные. форма, которая меняет цвет и размер, когда её передвигают. Почему вы рисуете на форме, а не на панели (или на PainiBox)? Ведь Delphi не для того, чтобы создавать приколы. Есть стандартные задачи: текстовый/графический редакторы, обработка файлов, базы данных, связь по сети, вычисления и графики, алгоритмы (сортировка и проч.). Для начала надо показать, как правильно делать интерфейс (меню, поля информации, кнопки управления) и какими средствами решать типовые задачи.

3. Следите, пожалуйста, за русским языком. Напр., в фразе "недолжно быть" "не" пишется отдельно. Следите за логикой. Напр.: "компонент называется (является) объектом". Термин "объект" вы пояснили, но забыли пояснить термин "компонент". "Можно отлавливать нежелательные события": если они нежелательные, то зачем их отлавливать? Просто не ставить для них обработчики. Timer.Enable=false вы считаете недоступным, но не надо переводить буквально, просто таймер останавливается (перестают вызываться обработчики OnTimer). И т.д.

4. Анг. язык. Почему вы использовали 'drug', что означает "лекарство, наркотик"? "Перетащить и бросить" это Drag&Drop. (При этом вы не рассказываете об автоматической схеме Drag&Drop - опять же, логика хромает).

5. Стиль программ. Нужен шрифт постоянной ширины (Courier New). Зачем писать русские слова английскими буквами (Proekt)? Тогда почему вы пишете Button, а не Knopka? Почему переменные a,b,c маленькие, а D - большая? (ShowMessage и halt - иногда лень нажимать Shift?). В MessageDlg вы засунули довольно длинные сообщения. Было бы проще оформить их в виде String, тогда вызов фунции был бы покрасивее.

6. Насколько я понимаю, книга для новичков. Но вы довольно глубоко копнули, допустим, dll, messages, API. Вот вы привели код TApplication.CreateForm. Неужели новичок его поймёт? Я сам не стал разбираться.

7. Ещё странная логика. Почему, если нет корней в квадратном уравнении, то надо аварийно закрывать программу (halt)? Почему не выдать сообщение "Корней нет, т.к. дискриминант отрицательный"?
Почему для сообщения вы используете то ShowMessage, то MessageDlg?

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 - логическое выражение).

Есть ещё куча замечаний, но рука устала писать.
Ответить с цитированием