А. Григорьев - О чём не пишут в книгах по Delphi

Здесь есть возможность читать онлайн «А. Григорьев - О чём не пишут в книгах по Delphi» — ознакомительный отрывок электронной книги совершенно бесплатно, а после прочтения отрывка купить полную версию. В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: СПб, Год выпуска: 2008, ISBN: 2008, Издательство: БХВ-Петербург, Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

О чём не пишут в книгах по Delphi: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «О чём не пишут в книгах по Delphi»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Рассмотрены малоосвещённые вопросы программирования в Delphi. Описаны методы интеграции VCL и API. Показаны внутренние механизмы VCL и приведены примеры вмешательства в эти механизмы. Рассмотрено использование сокетов в Delphi: различные механизмы их работы, особенности для протоколов TCP и UDP и др. Большое внимание уделено разбору ситуаций возникновения ошибок и получения неверных результатов в "простом и правильном" коде. Отдельно рассмотрены особенности работы с целыми, вещественными и строковыми типами данных, а также приведены примеры неверных результатов, связанных с ошибками компилятора, VCL и др. Для каждой из таких ситуаций предложены методы решения проблемы. Подробно рассмотрен синтаксический анализ в Delphi на примере арифметических выражений. Многочисленные примеры составлены с учётом различных версий: от Delphi 3 до Delphi 2007. Прилагаемый компакт-диск содержит примеры из книги.
Для программистов

О чём не пишут в книгах по Delphi — читать онлайн ознакомительный отрывок

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «О чём не пишут в книгах по Delphi», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Refresh;

end;

end;

end;

end;

procedure TCurve Form.FormMouseUp(Sender: TObject; Button: ТМouseButton; Shift: TShiftState; X, Y: Integer);

begin

// Если кнопка отпущена при отсутствии незавершенной кривой, значит,

// пользователь закончил рисование резиновой прямой, на основе которой

// нужно делать новую кривую

if (Button = mbLeft) and (FDragPoint = dpFirst) then

begin

FNewLine := False;

FDragPoint := dpNone;

// Промежуточные точки равномерно распределяем по прямой

FCurve[1].X := FCurve[0].X + Round((FCurve[3].X - FCurve[0].X) / 3);

FCurve[1].Y := FCurve[0].Y + Round((FCurve[3].Y - FCurve[0].Y) / 3);

FCurve[2].X := FCurve[0].X + Round(2 + (FCurve[3].X - FCurve[0].X) / 3);

FCurve[2].Y := FCurve[0].Y + Round(2 + (FCurve[3].Y - (Curve[0].Y) / 3);

Refresh;

end;

end;

procedure TCurveForm.FormPaint(Sender: TObject);

var

I: Integer;

L: Extended;

begin

// Сначала выводим фон

Canvas.Draw(0, 0, FBack);

if FNewLine then

begin

// Если программа находится в режиме рисования резиновой прямой,

// рисуем прямую от точки FCurve[0] до FCurve[3]. Значение FCurve[1]

// и FCurve[2] на данном этапе игнорируется

if FDragPoint = dpFirst then

begin

FCounter := 0;

L :=

Sqrt(Sqr(FCurve[0].X - FCurve[3].X) +

Sqr(FCurve[0].Y - FCurve[3].Y));

if L > 0 then

begin

FDX := Round(4 * (FCurve[0].Y -FCurve[3].Y) / L);

FDY := Round(4 * (FCurve[3].X - FCurve[0].X) / L);

LineDDA(FCurve[0].X, FCurve[0].Y, FCurve[3].X, FCurve[3].Y,

@LineDrawFunc, Integer(Canvas));

end;

end;

end

else

begin

// Если есть незавершённая кривая и установлен режим рисования

// по опорным точкам, выводим отрезки, показывающие касательные

// к кривой в её начале и конце

if RGroupDrawMethod.ItemIndex = 0 then

begin

Canvas.Pen.Style := psDot;

Canvas.Pen.Width := 3;

Canvas.Pen.Color := clDkGrey;

Canvas.MoveTo(FCurve[0].X, FCurve[0].Y);

Canvas.LineTo(FCurve[1].X, FCurve[1].Y);

Canvas.MoveTo(FCurve[3].X, FCurve[3].Y);

Canvas.LineTo(FCurve[2].X, FCurve[2].Y);

end;

// Рисуем красные квадраты, показывающие точки, которые пользователь

// может перемещать

Canvas.Pen.Style := psSolid;

Canvas.Pen.Width := 1;

Canvas.Pen.Color := clRed;

Canvas.Brush.Style := bsClear;

for I := 0 to 3 do

Canvas.Rectangle(FCurve[I].X - RectSize, FCurve[I].Y - RectSize,

FCurve[I].X + RectSize + 1, FCurve[I].Y + RectSize + 1);

end;

end;

// функция PtNearPt возвращает True, если точка с координатами (X1, Y1)

// удалена от точки Pt по каждой из координат не более чем на RectSize

function TCurveForm.PtNearPt(X1, Yl: Integer; const Pt: TPoint): Boolean;

begin

Result :=

(X1 >= Pt.X - RectSize) and (X1 <= Pt.X + RectSize) and

(Y1 >= Pt.Y - RectSize) and (Y1 <= Pt.Y + RectSize);

end;

procedure TCurveForm.BtnEndClick(Sender: TObject);

begin

if not FNewLine then

begin

DrawCurve(FBack.Canvas);

FNewLine := True;

Refresh;

end;

end;

Размеры фонового растра устанавливаются равными размеру развернутого на весь экран окна. Таким образом, если уменьшить окно, то те завершенные кривые, которые окажутся за его пределами, не пропадут — они вновь будут видимы, если увеличить размеры окна. Однако в программе не предусмотрено, что система позволяет пользователю менять разрешение экрана. Это можно учесть, добавив реакцию на сообщение WM_DISPLAYCHANGEи меняя в нем размеры фонового рисунка.

Глава 2

Использование сокетов Delphi

Так как большинство современных компьютеров объединены в сети, то и задачи программирования передачи и получения данных по сети возникают часто. Существует множество высокоуровневых средств обмена, но иногда их бывает недостаточно, и тогда приходится использовать самые низкоуровневные средства сетевого программирования — сокеты. Однако существует целый ряд причин, по которым овладеть этой технологией непросто. Во-первых, она сложна сама по себе из-за большого количества возможностей. Во-вторых, существующие библиотеки отягощены совместимостью со старыми версиями, которые, с современной точки зрения, не всегда развивались по правильному пути. В-третьих, у программистов на Delphi возникают дополнительные трудности, связанные как с тем, что сама реализация библиотеки сокетов ориентирована на язык С, так и с тем, что стандартный модуль WinSockпочему-то "застрял" на первой версии этой библиотеки, в то время как начиная с Windows NT 4 существует более удобная вторая.

Несмотря на традиционно высокий интерес к сокетам, литературы, в которой бы эта библиотека была детально описана, очень мало. Если не считать книг, где сокеты упоминаются обзорно, автору известна только одна книга, посвященная сокетам в Windows [3]. Но она не имеет никакого отношения к Delphi и не учитывает специфику этого средства разработки. Естественно, что из-за недостатка информации у начинающих программистов часто возникают вопросы, связанные с использованием сокетов в Delphi. В данной главе мы попытаемся ответить на эти вопросы.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «О чём не пишут в книгах по Delphi»

Представляем Вашему вниманию похожие книги на «О чём не пишут в книгах по Delphi» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «О чём не пишут в книгах по Delphi»

Обсуждение, отзывы о книге «О чём не пишут в книгах по Delphi» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x