Основы программирования, работа в консольном режиме Delphi. Правила оформления комментариев. Типы данных, используемые в консольном режиме. Текстовый редактор Delphi Memo. Пример загрузки текстового файла. Примеры решения и оформления простейших задач.
Аннотация к работе
{TODO-OUSER-CCONSOLE Main : Insert code here } end. {TODO-OUSER-CCONSOLE Main : Insert code here } end. {TODO-OUSER-CCONSOLE Main : Insert code here } end. {TODO-OUSER-CCONSOLE Main : Insert code here } end. end else begin x:=p;Актуальность прохождения технологической практики заключается в закреплении и получении новых навыков по профессии программиста. Практика началась с вводного инструктажа, изучения требований определенного рабочего места, ознакомления с безопасностью работы. Последующие дни практики были посвящены изучению простых программ такие как просматривать анимацию, текстовые редактор, математические задачи, назначения и принципы построения уникальных баз данных.
Введение
Практика - способствует укреплению знаний и получению новых навыков работы при решении задач разного характера. Практика позволяет достигать определенной, заранее поставленной цели .
Учебная практика проводится с целью закрепления полученных знаний и приобретения первоначальных практических навыков в решении конкретных проблем. Обучающиеся, благодаря прохождению учебной практики, получают возможность сопоставить свои ожидания и реалии будущей профессиональной деятельности.
Программирование - процесс создания компьютерных программ .
Язык программирования - формальная знаковая система, предназначенная для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, задающих внешний вид программы и действия, которые выполнит исполнитель (компьютер) под ее управлением.
Delphi это система визуального объектноориентированного программирования, в которой в качестве языка программирования используется язык Object Pascal.
OBJECTPASCAL (Объектный Паскаль) - язык программирования , разработанный в фирме APPLECOMPUTER в 1986 году группой Ларри Теслера , который консультировался с Никлаусом Виртом . Произошел от более ранней объектно-ориентированной версии Паскаль , называвшейся Clascal , который был доступен на компьютере APPLELISA .
Изменения OBJECTPASCAL от Borland в сравнении с TURBOPASCAL.
Изменения коснулись групп целых, символьных и строковых типов, которые стали разделяться на две категории: · Фундаментальные (fundamental) типы. Их представление в памяти (число битов и наличие знака) строго фиксируется и выдерживается неизменным во всех последующих реализациях OBJECTPASCAL для любых операционных систем и компьютерных платформ.
· Родовые (generic) типы. Их представление в памяти не фиксируется и будет реализовано оптимальным способом, в зависимости от реализации для конкретной операционной системы и компьютерной платформы.
Задачи практики является: 1. Повторение и закрепление теоретического материала полученного ранее в процессе обучения;
2. Изучение теории и технологии работы в среде программирования Delphi;
3. Получение новых знаний по программированию.
1. Теоретическая часть
1.1 Основы программирования, работа в консольном режиме Delphi
Консольные программы - лучший выбор, когда нужно сосредоточиться на сути проблемы, отвлекаясь от оформления. Поэтому начинать учиться программировать лучше именно на таких программах. Кроме того, профессиональные программисты часто пишут консольные программы для своего личного использования, потому что это экономит время (не нужно разрабатывать интерфейс).
Запустим среду Delphi Щелкнем по кнопке NEWPROJECT и выберем в появившемся окне тип программы CONSOLEAPPLICATION (консольное приложение).
Термин приложение означает прикладную компьютерную программу, то есть программу, которая нацелена на решение задач пользователя (в отличие от системных программ).
Мы увидим такой текст программы, который очень напоминает обычную программу на Паскале: program Project1;
{$APPTYPE CONSOLE} uses
SYSUTILS;
begin
{ TODO -OUSER -CCONSOLE Main : Insert code here } end.
В фигурных скобках записываются комментарии. Второй комментарий заканчивается словами Insertcodehere (Вставьте код сюда) - тут все понятно. Первый комментарий{$APPTYPE CONSOLE} - особый, потому что он начинается с первой позиции строки, и его второй символ - знак $. Это говорит о том, что далее следует некоторая команда (директива) транслятору, который будет строить исполняемый файл. В данном случае сказано, что нам нужно консольное приложение. Это значит, что необходимо создать текстовое (консольное) окно для ввода и вывода, все это будет сделано автоматически.
Блок uses есть и в классическом Паскале: он перечисляет дополнительные модули, которые используются в программе. В данном случае автоматически подключен модуль SYSUTILS, в котором находятся некоторые часто используемые стандартные функции.
Далее мы можем использовать старые знания. Код программы записывается между begin и end, константы и переменные объявляются выше основной программы, процедуры и функции размещают между объявлением переменных и основной программой.
Также в консольном режиме Delphi используются следующие типы данных: - целые числа (Тип Integer - значением переменной этого типа может быть целое число из интервала от -32768 до 32767).
- вещественные числа (Тип Real - значением переменной этого типа может быть вещественное число, модуль которого принадлежит отрезку [2,9?10-39; 1,7?108]).
- логический тип (Тип Boolean - переменная этого типа может принимать только два значения: истина (true) или ложь (false)).
- символьный (Тип Char - значениям переменной этого типа может быть любой символ, из набора ASCII-символов).
- перечисляемый тип (тип данных, заданный списком принадлежащих ему значений).
- интервальный тип или диапазон (позволяет задавать две константы, определяющие границы диапазона значений для данной переменной).
1.2 Разработка приложений в Borland Delphi
Borland Delphi представляет собой средство разработки приложений для Microsoft Windows. Delphi является мощным и простым в использовании инструментом для создания автономных программ, обладающих графическим интерфейсом (GUI ), или 32-битных консольных приложений (программ, которые не имеют графического интерфейса).
Компонент Label предназначен для отображения статического текста, то есть надписей и меток на Форме, которые не меняются в течение всего времени работы программы. Конечно, текст надписи, отображаемый компонентом Label можно изменить, но не непосредственно, а только программно.
Компонент DELPHIMEMO это простой текстовый редактор. DELPHIMEMO позволяет вводить многострочный текст с клавиатуры, загружать его из файла, редактировать и сохранять в файл текстового формата.
Простота текстового редактора компонента DELPHIMEMO заключается в том, что текстовый редактор DELPHIMEMO не обладает возможностями форматирования содержащегося в нем текста. Это означает, что все атрибуты выбранного шрифта будут относиться ко всему тексту.
Текст в компоненте Delphi Memo размещается построчно. Поэтому имеется доступ к каждой строке текста отдельно. Строки в редакторе Delphi Memo являются объектами Lines[i] типа String, где i - номер строки, отсчитываемый от нуля. Объект Lines[i] доступен и для чтения, и для записи. Соответственно, текст в компоненте Memo можно редактировать не только с клавиатуры, но и программно.
Компонент DELPHIBUTTON это простая командная кнопка. Командная кнопка DELPHIBUTTON используется для реализации в программе команд с помощью обработчика события ONCLICK этого компонента.
Один и тот же обработчик может обрабатывать события нескольких компонентов TBUTTON (да и не только TBUTTON, но и даже компонентов других типов). Для определения того, событие какого именно компонента нужно обрабатывать, используется встроенная переменная Sender типа TOBJECT, обозначающая объект, вызвавший данное событие.
Компонент Delphi Image предназначен для отображения на форме графических изображений по умолчанию выводит на поверхность формы изображения представленных в bmp формате. Для вывода изображений в jpg формате необходимо в директиве uses подключить модуль JPEG. После размещения на форме компонента Image, он принимает вид выделенной прямоугольной области. Загрузить изображения можно с помощью OBJECTINSPECTOR. Для этого находим свойство Picture и слева от него нажимаем на три точки. Открывается окно PICTUREEDITOR и в нем выбираем загрузить(Load), в раскрывшемся окне выбираем файл изображения.
Компонент DELPHIRADIOBUTTON - это "радиокнопка", и как следует из названия, служит для "переключения каналов", как и в настоящем радиоприемнике. Это значит, если выбран один из компонентов Delphi RADIOBUTTON, то с остальных компонентов выбор автоматически снимается. Получается, что в данный момент может быть выбран только один из группы компонентов DELPHIRADIOBUTTON.
RADIOGROUP - панели группы радиокнопок. Это панель, которая может содержать регулярно расположенные столбцами и строками радиокнопки. Надпись в левом верхнем углу панели определяется свойством Caption. А надписи кнопок и их количество определяются свойством Items, имеющим ТИПTSTRINGS. Щелкнув на кнопке с многоточием около этого свойства в окне Инспектора Объектов, вы попадете в редактор списков строк. В нем вы можете занести надписи, которые хотите видеть около кнопок, по одной в строке. Сколько строчек вы запишете - столько и будет кнопок.
Кнопки, появившиеся в панели после задания значений Items, можно разместить в несколько столбцов (не более 17), задав свойство Columns. По умолчанию Columns = 1, т.е. кнопки размещаются друг под другом.Определить, какую из кнопок выбрал пользователь, можно по свойству ITEMINDEX, которое показывает индекс выбранной кнопки. Индексы, как всегда в Delphi, начинаются с 0. По умолчанию ITEMINDEX = -1, что означает отсутствие выбранной кнопки. Если вы хотите, чтобы в момент начала выполнения приложения какая-то из кнопок была выбрана (это практически всегда необходимо),то надо установить соответствующее значение ITEMINDEX во время проектирования. Если вы используете радиокнопки не для ввода, а для отображения данных, устанавливать значение ITEMINDEX можно программно во время выполнения приложения.
Компонент COLORGRID (таблица цветов) предназначен для выбора основного и фонового цветов из 16-цветной палитры.
Dialogs - содержит стандартные диалоговые элементы Windows (окна открытия, сохранения файлов, окна выбора шрифта, принтера и т.п.) TOPENDIALOG это диалог открытия файла. Этот и все другие диалоги активируются через функцию Execute. Если возвращаемое значение равно true, значит пользователь выбрал файл (принтер, шрифт и т.п.) и нажал на кнопку Ok в этом диалоговом окне. Тогда имя открываемого файла содержится в свойстве FILENAME. Обычно процедура вызова подобного диалогового окна выглядит следующим образом: IFOPENDIALOG.Execute then Memo.Lines.LOADFROMFILE(OPENDIALOG.FILENAME);
Здесь показан пример загрузки текстового файла в компонент Memo (страница Standart), выбранного с помощью диалога открытия файла OPENDIALOG.
Текст заголовка диалога в свойстве Title. Фильтр, который будет отфильтровывать файлы по расширению указывается в свойстве Filter. Его целесообразно установить сразу во время разработки проекта, поскольку при этом открывается удобная для занесения значений таблица.
TSAVEDIALOG - диалог сохранения файла. Свойства и работа подобны диалогу TOPENDIALOG.
TOPENPICTUREDIALOG - диалог открытия рисунка. В отличие от TOPENDIALOG имеет внутренний предварительный просмотр рисунка в открываемом файле. Кроме того уже имеет некоторые заданные свойства фильтра Filter, который содержит все распознаваемые в этом диалоге форматы графики.
TSAVEPICTUREDIALOG - диалог сохранения рисунка.
TFONTDIALOG - вызывает стандартный диалог выбора шрифта. Свойство Font содержит как изначальный (выбранный по умолчанию) шрифт, так и измененный, после вызова диалога.
TCOLORDIALOG-диалог выбора цвета.
Компонент DELPHICHECKBOX это флажок - независимый переключатель. Флажок DELPHICHECKBOX используется в программе для визуализации состояний включено-выключено. Каждый щелчок мышкой по компоненту DELPHICHECKBOX меняет его состояние на противоположное. Смена состояния переключателя также доступна и в программе. DELPHICHECKBOX представляет собой сочетание небольшого окошка, которое и визуализирует наличием или отсутствием "галочки" состояние компонента, и компонента Label - заголовка, поясняющего назначение переключателя.
2.
Практическая часть
Задача № 1 программирование delphi консольный режим
Ввести кол во секунд и вывести на экран колво минут и часов
{ TODO -OUSER -CCONSOLE Main : Insert code here } end.
Задача № 2
Если число А больше или равно 10 и меньше или равно 99 и делится на число В то появляется текст что это правда, иначе, ложь.
Рисунок 2.2. -приложение в действие
Листинг: PROGRAMPROJECT2;
{$APPTYPECONSOLE} uses
SYSUTILS;
Var a,b:Integer;
begin
Writeln (a,b);
Readln (a,b);
if (a>= 10) and (a<=99) and (a mod b=0)
THENWRITELN ("true") else writeln ("false");
Readln;
{ TODO -OUSER -CCONSOLE Main : Insert code here } end.
Задача № 3
Вычислить значение выражения по формуле
Рисунок 2.3 - решение задачи
Листинг: PROGRAMPROJECT2;
{$APPTYPECONSOLE} uses
SYSUTILS;
var x,y,a:real;
begin
Writeln ("x,y") ;
Readln (x,y);
a:=(x y) / (y 1) - (x*y-12 / 34 x);
Writeln ("otvet" ," a=",a:7:2);
Readln;
{ TODO -OUSER -CCONSOLE Main : Insert code here } end.
Задача № 4
Найти произведение цифр заданного четырехзначного числа.
Рисунок 2.4. - произведение найдено
Листинг: PROGRAMPROJECT1;
{$APPTYPECONSOLE} uses
SYSUTILS;
var
Chislo, Proizv: integer;
Begin
Proizv:=1;
write("chislo: ");
readln(Chislo);
WHILECHISLO> 0 do begin
Proizv:=Proizv*(Chislo mod 10);
Chislo:=Chislo div 10;
end;
writeln("proizvedenie: ", Proizv);
readln;
{ TODO -OUSER -CCONSOLE Main : Insert code here } end.
Задача № 5
Квадрат заданного трехзначного числа равен кубу суммы цифр этого числа.
Рисунок 2.5. - приложение запущено
Задача № 6
Даны действительны числа x и y не равные друг другу. Меньшее из этих двух чисел заменить половинной их суммы, а большее их удвоенным произведением.
Рисунок 2.6. - числа заменены
Листинг: PROGRAMPROJECT2;
{$APPTYPECONSOLE} uses
SYSUTILS;
var x,y,s,p: Real;
begin
Writeln ("vveditex,y");
readln(x,y);
s:=(x y)/2;
p:=2*x*y;
if x<y then begin x:=s;
y:=p;
end else begin x:=p;
y:=s;
end;
writeln(x:6:3," ",y:6:3);
readln;
{ TODO -OUSER -CCONSOLE Main : Insert code here } end.
Задача № 7
Даны три числа a,b,с.Определить, какое из них равно d. Если не одно не равно d, то найти мах (d-a) , (d-b), (b-c).
Рисунок 2.7. - приложение в действие
Листинг: PROGRAMPROJECT1;
{$APPTYPECONSOLE} uses
SYSUTILS;
var s,s1,s2,a,b,c,d: Integer;
begin
Writeln ("a,b,c,d");
Readln (a,b,c,d);
begin if (a = d) then writeln ("chislo a = chislu d");
end;
begin if (b=d) then writeln ("chislo b = chislu d") ;
end;
begin if (c=d) then writeln ("chislo c = chislu d") end;
begin s:=d-a;
s1:=d-b;
s2:=b-c;
Write ("s ravno" ,s); Readln ;
Write ("s1 ravno", s1);
Readln ;
Write ("s2 ravno", s2);
Readln ;
end;
begin if (s>s1) and (s>s2) then Writeln ("s max");
if (s1>s) and (s1>s2)then Writeln ("s1 max");
if (s2>s1) and (s2>s) then Writeln ("s2 max");
readln;
end;
{ TODO -OUSER -CCONSOLE Main : Insert code here } end.
Задача № 8
Если сумма трех попарно различных действительных чисел X,Y,Z меньше единицы, то наименьшее из этих трех чисел заменить полусуммой двух других; в противном случае заменить меньшее из X,Y полусуммой двух оставшихся значений.
Рисунок 2.8. - решение задачи
Листинг: PROGRAMPROJECT2;
{$APPTYPECONSOLE} uses
SYSUTILS;
var x,y,z,s,min: real;
begin write ("vvedite X: "); readln (x);
write ("vvedite Y: "); readln (y);
write ("vvedite Z: "); readln (z);
s:=x y z;
if s<1 then begin writeln ("summa menshe 1");
if (x<y) and (x<z) then x:=(y z)/2 else if y<z then y:=(x z)/2 else z:=(x y)/2;
end elsewriteln ("summa bolshe 1");
writeln ("X = ",x:3:2," Y = ",y:3:2, " Z = ",z:3:2);
readln;
{ TODO -OUSER -CCONSOLE Main : Insert code here } end.
Задача № 9
Вычислить значение функции
F(x)=
Рисунок 2.9. - решение функции
Листинг: PROGRAMPROJECT2;
{$APPTYPECONSOLE} uses
SYSUTILS;
var y: Real;
x: Integer;
begin
Writeln("Vveditex");
Readln(x);
if x>1 then begin y:=1/(x 6);
writeln("y=",y:0:3);
readln;
end else
Writeln("0=0");
Readln;
{ TODO -OUSER -CCONSOLE Main : Insert code here } end.
Задача № 10
Для каждой введенной цифры (0-9) вывести соответсвуещие ей название на английском языке (0-zero ,1-one, 2-two…)
Рисунок 2.10. - приложение запущено
Листинг: PROGRAMPROJECT2;
{$APPTYPECONSOLE} uses
SYSUTILS;
var i: integer;
n: string;
begin write("vveditechislo: "); readln(n);
fori := 1 to length(n) do case n[i] of
"0": write("zero ");
"1": write("one ");
"2": write("two ");
"3": write("three ");
"4": write("four ");
"5": write("five ");
"6": write("six ");
"7": write("seven ");
"8": write("eight ");
"9": write("nine ");
end;
Readln;
{ TODO -OUSER -CCONSOLE Main : Insert code here } end.
Задача № 11
Около стены стоит палка длинной Хм. Один ее конец находится на расстоянии Ум. от стены. Определить значение угла а между палкой и полом для значений x=k м и уизменяющегося от 2 до 3 метров с шагом h м.
Рисунок 2.11. - угол определился
Листинг: PROGRAMPROJECT2;
{$APPTYPECONSOLE} uses
SYSUTILS;
varx,y,c,v,b,hy:real;
begin write("X = ");
readln(x);
write("shag y = ");
readln(hy);
y:=2;
while y<=3 do begin c:=arctan((y/sqr(1-y*y))/(x/sqr(1-x*x)));
v:=(pi/2)-c;
writeln("Ygol = ",v:3:5," pri y=",y:3:5);
y:=y hy;
end;
readln;
{ TODO -OUSER -CCONSOLE Main : Insert code here } end.
Задача № 12
Дано натуральное число N, вычислить:
Рисунок 2.12. - выполненая задача
Листинг: PROGRAMPROJECT2;
{$APPTYPECONSOLE} uses
SYSUTILS;
var n,i:integer;
k,c,s:real;
q:string;
begin writeln("BBEGNTE n ");
readln(n);
s:=0;
for i:=1 to n do begin
S:=S cos(n)/sin(n);
end;
writeln("rezultat=",s:2:3);
readln;
{ TODO -OUSER -CCONSOLE Main : Insert code here } end.
Задача № 13
Произведение n первых нечетных чисел равно p. Сколько сомножителей взято? Если введенное число n не является указанным произведением, сообщить об этом.
Рисунок 2.13. - приложение в действие
Листинг: PROGRAMPROJECT2;
{$APPTYPECONSOLE} uses
SYSUTILS;
varn,k:byte;
p,s:longint;
begin write("Vvedite proizvedenie neskolkikh pervykh nechetnykh naturalnykh chisel p=");
readln(p);
s:=1;
n:=1;
k:=1;
while s<p do begin k:=k 2;
n:=n 1;
s:=s*k;
end;
if sp then write("chislo ",p," ne yavlyaetsya proizvedeniem pervykh ne chetnykh chisel") else write("vziato mnojitelei - ",n);
readln;
{ TODO -OUSER -CCONSOLE Main : Insert code here } end.
Задача № 14
Найти все делители натурального числа N.
Рисунок 2.14. - делители выведены
Листинг: PROGRAMPROJECT2;
{$APPTYPECONSOLE} uses
SYSUTILS;
varj,n:Integer;
begin
Writeln ("vvedite n");
readln(N);
for j:=2 to N do if N mod j = 0 then write(j: 5);
Readln (j);
{ TODO -OUSER -CCONSOLE Main : Insert code here } end.
Задача № 15
Перевести заданное число в 16ую систему:
Рисунок 2.15. - число переведено
Листинг: PROGRAMPROJECT2;
{$APPTYPECONSOLE}
Uses
SYSUTILS;
var a : longint;
function DEC_HEX(x:longint):string;
constdigits:array [0..15] of char = ("0","1","2","3","4","5","6","7", "8","9","A","B","C","D","E","F");
varres:string; d:0..15;
begin res:="";
while (x0) do begin d:=x mod 16;
x:=x div 16;
res:=digits[d] res;
end;
DEC_HEX:=res;
end;
begin readln( a );
writeln( DEC_HEX(a) );
Readln;
end.
{ TODO -OUSER -CCONSOLE Main : Insert code here } end.
for i:=0 to colcount-1 do for j:=0 to colcount-1 do
If i>=j then begin rec:=STRINGGRID1.cellrect(i,j);
STRINGGRID1.Canvas.FILLRECT(rec);
end;
end;
end;
procedure TFORM10.btn2Click(Sender: TOBJECT);
begin
Form10.Hide;
form11.show;
end;
end.
Задача № 21
Текст задания: Составить таблицу 4х4, состоящую из целых чисел. Программа должна выводить число, лежащее в ячейке с введенным с клавиатуры номером столбца и строки.
Текст задания: Составить алгоритм и написать программу для решения задачи согласно своему варианту. По заданным координатам точки М(x,y) определить попадает или нет точка М в заштрихованную область.
if (x=0) and (y>=0) then label1.caption:= ("точка M входит в закрашеннуюобасть") elselabel1.caption:= ("точка М не входит в закрашенную обасть");
end;
procedure TFORM21.BITBTN2Click(Sender: TOBJECT);
begin
Form21.Close;
form1.close;
end;
procedure TFORM21.BITBTN3Click(Sender: TOBJECT);
begin form1.show;
form21.Close;
end;
end.
Задача № 25
Текст задания: Дана матрица 5 на 5. Выяснить, верно ли, что наибольшее из значений элементов главной диагонали больше, чем наименьшее из значений элементов побочной диагонали.
for i:=6-1 downto 1 do for j:=1 to 6-1 do if a[6-j,j]<min then min:=a[6-j,j] ;
label2.Caption:="= " inttostr (min);
end;
procedure TFORM16.Button3Click(Sender: TOBJECT);
var a:array [1..5, 1..5] of Integer;
i, j:Integer;
begin for i:=1 to 5 do begin
STRINGGRID1.Cells[0,i]:="i= " INTTOSTR(i);
STRINGGRID1.Cells[i,0]:="j= " INTTOSTR(i);
end;
max:=STRTOINT(STRINGGRID1.Cells[1,1]);
for i:=1 to 5 do label4.Caption:="= " inttostr(max);
end;
procedure TFORM16.Button4Click(Sender: TOBJECT);
begin ifmax>minthenlabel5.caption:="наибольшее из значений элементов главной диагонали больше чем наименьшее из значений побочной диагонали" elselabel5.caption:="утверждение не еврно";
end;
end.
Задача № 26
Текст задания: 1. Разработать алгоритм решения в соответствии с заданием.
2.Обработать на ЭВМ матрицу в соответствии с вариантом задания, указанного в таблице.
3. Проверить правильность выполнения с помощью тестового варианта.
Актуальность прохождения технологической практики заключается в закреплении и получении новых навыков по профессии программиста.
Практика началась с вводного инструктажа, изучения требований определенного рабочего места, ознакомления с безопасностью работы.
Последующие дни практики были посвящены изучению простых программ такие как просматривать анимацию, текстовые редактор, математические задачи, назначения и принципы построения уникальных баз данных.
Исследовалось использование языка программирования BORLANDDELPHI 7.
Были получены знания о новых методах использования, создания баз данных, запросов, списков, работа с анимацией.
Основными задачами практики являются: 1. улучшения качества профессиональной подготовки;
2. закрепление и расширение теоретических и практических знаний и умений, приобретенных студентами в предшествующий период теоретического обучения.
При прохождении учебной практики я творчески применял имеющиеся знания, которые получил по основным учебным дисциплинам, по которым имеется аттестация к окончанию 3 курса.
Широкий охват отраслей, с которыми мне пришлось сталкиваться на практике, позволил мне лучше усвоить изученный теоретический материал, полученных на занятиях в колледже.
Практическая деятельность мне помогла научиться самостоятельно решать определенный круг задач, возникающих в ходе работы программиста. В частности, я научился применять теоретические знания.
Список литературы
1. Шупрута В.В. "Самоучитель Delphi 2005"
2. ТЕЙКСЕЙРАС., ПАВЕКОК. "BORLANDDELPHI 5. Руководство разработчика. Ч
3. ТЕЙКСЕЙРАС., ПАЧЕКОК. "Borland Delphi 5. Руководство разработчика"
4. Тейксейра С., Пачеко К. "BORLANDDELHI 6. Руководство разработчика"
5. Тейлор Д. и др. "Delphi 3: библиотека программиста"
6. Фленов М. Е. "Библия Delphi"
7. Озеров В. "Советы по Delphi."
8. Зайцев О. В., Владимиров А. М. " Графика в Delphi"
9. Кандзюба С. П., Громов В. Н. "Delphi 6/7. Базы данных и приложения. Лекции и упражнения"