Сергей Парижский - Delphi. Учимся на примерах

Скачивание начинается... Если скачивание не началось автоматически, пожалуйста нажмите на эту ссылку.
Жалоба
Напишите нам, и мы в срочном порядке примем меры.
Описание книги "Delphi. Учимся на примерах"
Описание и краткое содержание "Delphi. Учимся на примерах" читать бесплатно онлайн.
Данная книга — продолжение предыдущей книги автора, "Delphi. Только практика". Также как и в "Delphi. Только практика", в данном издании подробно рассмотрены программы для сетей, различные шуточные программы, простые игрушки, некоторые полезные приложения, разработка приложений в стиле Windows XP. В частности, здесь можно найти такие примеры как бесплатная отправка SMS, FTP-клиент, простое шифрование, CGI-сценарии и многое другое. Описаны методы работы с системным реестром Windows и INI-файлами, а также некоторые важные аспекты программирования на системном уровне с применением функций Windows API. Для облегчения понимания программ каждый пример содержит комментарии сложных строк кода.
Книга ориентирована как на тех, кто уже имеет опыт создания приложений в Delphi, так и на начинающих программистов. Для начинающих пользователей Delphi в конце книги добавлено приложение с описанием синтаксиса языка программирования Object Pascal.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, IniFiles, jpeg, Menus;
type TForm1 = class(TForm)
Memo1: TMemo;
RadioGroup1: TRadioGroup;
p1: TPanel;
p2: TPanel;
p3: TPanel;
p4: TPanel;
p5: TPanel;
an1: TRadioButton;
an2: TRadioButton;
an3: TRadioButton;
an4: TRadioButton;
Label1: TLabel;
Label2: TLabel;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
Open1: TOpenDialog;
procedure FormCreate(Sender: TObject);
procedure p1Click(Sender: TObject);
procedure p2Click(Sender: TObject);
procedure p3Click(Sender: TObject);
procedure p4Click(Sender: TObject);
procedure p5Click(Sender: TObject);
procedure Image1Click(Sender: TObject);
procedure p1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure p1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure p2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure p2MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure p3MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure p3MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure p4MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure p4MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure p5MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure p5MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure N1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
procedure start; //начало теста
procedure question_select; //выбор вопроса
procedure vars(var variant: integer); {сортировка и определение правильного варианта ответа}
procedureverno(); {проверка: правильно ли ответил пользователь}
public
{ Public declarations }
end;
var
Form1: TForm1;
i, a, n, balls, vopr: integer; {различные счетчики и переменные для подсчета баллов}
dir, dir2, ss, zz, yes: string; {путь к файлу с вопросами, к программе и расшифрованной базе}
win: TIniFile; //переменная для работы с ini-файлами
mass: array[1..100] of integer; {содержит номера уже заданных вопросы, чтобы они не повторялись}
f1, f2: file of char; //переменные для работы с файлами
сор: char; //для работы с каждым символом отдельно
implementation
{$R *.dfm}
procedure TForm1.vars(var variant: integer);
begin
//вызываем процедуру выбора случайного вопроса question_select();
case variant of
1:
begin
Win:= TIniFile.Create(dir2); //открываем ini-файл
//считываем вопрос
Memo1.Text:= Win.ReadString('Q', IntToStr(a), Memo1.Text);
//считываем правильный вариант ответа
an1.Caption:= Win.ReadString('A', IntToStr(a), an1.Caption);
//считываем три неверных варианта к данному вопросу
an2.Caption:= Win.ReadString('W1', IntToStr(a), an2.Caption);
an3.Caption:= Win.ReadString('W2', IntToStr(a), an3.Caption);
an4.Caption:= Win.ReadString('W3', IntToStr(a), an4.Caption);
Win.Free; //освобождаем ini-файл
//помечаем первый вариант как правильный
yes:= an1.Caption;
end;
2:
begin
Win:= TIniFile.Create(dir2);
Memo1.Text:= Win.ReadString('Q', IntToStr(a), Memo1.Text);
an2.Caption:= Win.Readstring('A', IntToStr(a), an2.Caption);
an1.Caption:= Win.Readstring('W1', IntToStr(a), an1.Caption);
an3.Caption:= Win.ReadString('W2', IntToStr(a), an3.Caption);
an4.Caption:= Win.ReadString('W3', IntToStr(a), an4.Caption);
Win.Free;
yes: = an2.Caption;
end;
3:
begin
Win:= TIniFile.Create(dir2);
Memo1.Text:= Win.ReadString('Q', IntToStr(a), Memo1.Text);
an3.Caption:= Win.ReadString('A', IntToStr(a), an3.Caption);
an2.Caption:= Win.ReadString('W1', IntToStr(a), an2.Caption);
an1.Caption:= Win.ReadString('W2', IntToStr(a), an1.Caption);
an4.Caption:= Win.ReadString('W3', IntToStr(a), an4.Caption);
Win.Free;
yes:= an3.Caption;
end;
4:
begin
Win:= TIniFile.Create(dir2);
Memo1.Text:= Win.ReadString('Q', IntToStr(a), Memo1.Text);
an4.Caption:= Win.ReadString('A', IntToStr(a), an4.Caption);
an2.Caption:= Win.ReadString('Wl', IntToStr(a), an2.Caption);
an3.Caption:= Win.ReadString('W2', IntToStr(a), an3.Caption);
an1.Caption:= Win.ReadString('W3', IntToStr(a), an1.Caption);
Win.Free;
yes:= an4.Caption;
end;
end;
end;
procedure TForm1.start();
begin
Randomize; //Включаем генератор случайных чисел
for i:=1 to n do mass[i] := 0; //n – количеству вопросов
{$I-} //отключаем контроль ошибок ввода/вывода.
//делаем все элементы видимыми для пользователя
Memo1.Visible:= True;
RadioGroup1.Visible:= True;
Label1.Visible:= True;
an1.Visible:= True;
an2.Visible:= True;
an3.Visible:= True;
an4.Visible:= True;
p1.Visible:= True;
p2.Visible:= False;
p3.Visible:= False;
p4.Visible:= False;
p5.Visible:= False;
balls:= 0;
Label2.Visible:= False; //прячем результаты
Label1.Caption:= 'Первый вопрос:';
dir2:= 'C:\base.bsd'; //путь к расшифрованной базе
//копируем зашифрованную базу на диск С:
CopyFile(PChar(ss), PChar(dir2), True);
//связываем переменную f1 с зашифрованным ini-файлом
AssignFile(f1, ss);
//связываем переменную f2 с файлом C:\base.bsd
AssignFile(f2, dir2);
Reset(f1); //открываем первый файл на чтение
Rewrite(f2); //второй – на запись
while not Eof(fl) do
begin //пока не достигнут конец первого файла
Read(f1, cop); //считываем один символ из файла
сор:= Chr(Ord(cop) xor 101); //расшифровываем символ
Write(f2, сор); //записываем расшифрованный символ в файл
end;
CloseFile(f1); //закрываем первый файл
CloseFile(f2); //закрываем второй файл
{$I+} //включаем контроль ошибок ввода/вывода
Win:= TIniFile.Create(dir2); //работаем с ini-файлом
//считываем количество вопросов в базе
ss:= Win.ReadString('num', 'num', ss);
//преобразовываем строку в число и записываем значение в n
n:= StrToInt(ss);
vopr:=Random(4) + 1;
//случайное число от 1 до 4
vars(vopr); {передаем число процедуре vars, которая сортирует варианты ответов}
end;
procedure TForm1.question_seleсt();
label ran; //метка ran для быстрого перехода
begin
Randomize;
ran:
a:=Random(n); //выбираем случайный вопрос из базы
//проверяем: не задавали ли мы этот вопрос ранее
for i:=1 to n do
if mass[i] = a then goto ran;
for i:=1 to n do
if mass[i] = 0 then begin
mass[i]:= а; {записываем номер вопроса, чтобы не задавать его больше }
Break;
end;
//сбрасываем флажки со всех вариантов ответов
an1.Checked:= False;
an2.Checked:= False;
an3.Checked:= False;
an4.Checked:= False;
end;
procedure TForm1.verno();
begin
if an1.Checked then
if yes = an1.Caption then balls:= balls + 1;
if an2.Checked then
if yes = an2.Caption then balls:= balls + 1;
if an3.Checked then
if yes = an3.Caption then balls:= balls + 1;
if an4.Checked then
if yes = an4.Caption then balls:= balls + 1;
end;
procedure TForm1.N2Click(Sender: TObject);
begin
Randomize;
//начинаем обзор с текущего каталога
Open1.InitialDir:= GetCurrentDir;
if not Open1.Execute then ShowMessage('Вы не выбрали файл!')
else begin
ss:= Open1.FileName; //открываем выбранный файл
zz:= ss; //запоминаем путь к базе
start(); //начинаем тест
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Randomize;
//получаем каталог, в котором находится наша программа
dir:= GetCurrentDir;
ss:= dir + '\comp.ini'; //путь к базе вопросов
zz:= ss;
start(); //начинаем тест
end;
procedure TForm1.p1Click(Sender: TObject);
begin
Label1.Caption:= 'Второй вопрос:';
verno(); //принимаем вариант ответа
p1.Visible:= False; //убираем первую панель
р2.Visible:=True; //активизируем вторую панель
vopr:= Random(4) +1; //выбираем случайный вариант ответа
vars(vopr); //задаем вопрос
end;
procedure TForm1.p2Click(Sender: TObject);
begin
Label1.Caption:= 'Третий вопрос:';
verno();
p2.Visible:= False;
Подписывайтесь на наши страницы в социальных сетях.
Будьте в курсе последних книжных новинок, комментируйте, обсуждайте. Мы ждём Вас!
Похожие книги на "Delphi. Учимся на примерах"
Книги похожие на "Delphi. Учимся на примерах" читать онлайн или скачать бесплатно полные версии.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Отзывы о "Сергей Парижский - Delphi. Учимся на примерах"
Отзывы читателей о книге "Delphi. Учимся на примерах", комментарии и мнения людей о произведении.