В помощь начинающим
программистам. Набор заготовок для создания программ на Delphi
Проект задания
Постановка задачи создать программу “напоминалку” и программу “инсталлятор”
1) Программа “напоминалка” каждые 10 минут выводит на экран сообщение
(Пить
и Курить вредно. Мойте руки перед едой. Любите и изучайте Delphi)
При этом сама программа невидима и прописана в реестр Windows для автозапуска.
По этому при каждом включении компьютера программа запускается автоматически и каждые 10 минут выводит на экран Сообщения.
2) Программа “ инсталлятор ”(instnap.exe) устанавливает программу “напоминалку” (nap.exe)
Эта программа
2.1) Определяет каталог, где установлен Windows.
2.2) Создает в каталоге Windows папку napnap
2.3) Копирует программу “напоминалку” в папку Windows\napnap
2.4) Запускает программу “напоминалку”, при этом программа “напоминалка”, прописывается в реестр Windows для автозапуска.
01. Как сделать Delphi
приложение невидимым
Открыть файл проекта с расширением *.dpr
в блокноте добавить строку Application.ShowMainForm:=False; сохранить изменения
см код:
begin
Application.Initialize;
Application.ShowMainForm:=False;
//Невидимая форма
Application.CreateForm(TForm1,
Form1);
Application.Run;
end.
02. Вывод сообщения из
невидимого Delphi приложения
ShowMessage('Пить и Курить вредно’);
03. Запись в реестр, для
автозапуска приложения
Добавить в используемые библиотеки
Uses registry;
procedure
TForm1.FormCreate(Sender: TObject);
var
reg: TRegistry;
begin
reg := TRegistry.Create;
reg.RootKey
:= HKEY_LOCAL_MACHINE;
reg.LazyWrite := false;
reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run',false);
reg.WriteString('MMM', Application.ExeName);
reg.CloseKey;
reg.free;
end;
04. Определение пути к папке windows
var
PRes : PChar;
Res : word;
Windir:
string
begin;
PRes := StrAlloc(255);
Res := GetWindowsDirectory(PRes, 255);
if Res >
0 then windir:= StrPas(PRes);//'Windows
DIR'
end;
В переменной windir записан путь к папке Windows
==
05. Определить путь к
текущему открытому каталогу
var
putydir: string
begin;
putydir:=GetCurrentDir;//Путь к текущему каталогу
end;
==
06. Создание нового
каталога по заданному пути
CreateDir('c:\kurspk2009');
==
07.
Запуск
любого ассоциированного файла
Дополнительно используемые библиотеки
uses
ShellApi,
var
APchar:array[0..254] of char;//Массив, Путь к папке где лежит файл
NMres:string;//Название файла
begin;
StrPCopy(APchar,('C:\windows\nap.exe’));//Путь к файлу
ShellExecute(0, Nil,APchar,
Nil, Nil, SW_NORMAL);
end;
==
08. Удаление файла
deletefile(‘Полное имя Файла’);
=
09. Процедура копирования
файла с использованием WinApi
Используемые библиотеки
uses
Windows, Messages,
SysUtils, Classes, Controls, Forms,
StdCtrls,
ShellApi,ShlObj, ComObj,
ActiveX, ExtCtrls, ExtDlgs;
//================================================================
// процедура копирования файла WinApi
procedure FileCopy(const SourceFileName, TargetFileName: string);
//Параметры, Источник копирования полный путь с названием файла, Приемник //копирования полный путь с названием файла,
var
S, T : TFileStream;
begin
S := TFileStream.Create(sourcefilename, fmOpenRead );
try
T := TFileStream.Create(targetfilename, fmOpenWrite or fmCreate);
try
T.CopyFrom(S, S.Size ) ;
FileSetDate(T.Handle, FileGetDate(S.Handle));
finally
T.Free;
end;
finally
S.Free;
end;
end;
//====
10.
Копирование папки с файлами
Пример кода
unit Unit1;
interface
uses
Windows, Messages, SysUtils,
Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls,
ShellApi; //Добавить библиотеки
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
Label3: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
function CopyDir(const fromDir, toDir: string): Boolean;
var
fos: TSHFileOpStruct;
begin
ZeroMemory(@fos, SizeOf(fos));
with fos do
begin
wFunc := FO_COPY;
fFlags :=
FOF_FILESONLY;
pFrom := PChar(fromDir + #0);
pTo := PChar(toDir)
end;
Result := (0 = ShFileOperation(fos));
end;
//Пример использования процедурами
procedure
TForm1.Button1Click(Sender: TObject);
begin
CopyDir(Edit1.text,Edit2.text);
end;
end.
11. Принудительное Экспресс
закрытие программы
Application.Terminate;
==
12. Создать двумерный строковый массив
var
spuchzap:array[1..2000,1..3]of string;//Списоу учетн записей учеников
===
a:=spuchzap[1.2];//Пример чтения из массива
spuchzap[1.2]:=a;//Пример Записи в Массив
==============================
13. Пример Чтения текстового
файла
var
f1:textfile; {Обьявить текстовый файл}
m:string
begin
AssignFile(f1,'test.txt');
//Обьявить работу с файлом
Reset(f1); //Приготовить файл для чтения
while not EOF(f1) do //читать пока не закончится
begin;
readln(f1,m);
end;
CloseFile(f1);
//Закрыть файл.
//=========================
14. Пример Создания и
записи текстового файла
var
f2:textfile; {Обьявить текстовый файл}
m:string
begin
AssignFile(f2,'test.txt');
//Обьявить работу с файлом grafbas
rewrite(f2);//обьявить , что будет делаться запись в файл
writeln(f2,m);//Запись строки в файл
CloseFile(f2);
//Закрыть файл.
end;
==============================
15. Проверка
существования текстового файла
AssignFile(f1, 'test.txt'); //Обьявить работу с файлом
{$I-}
Reset(f1);
//
{$I-}
if IOResult <> 0 then ShowMessage('Внимание! Файл записей не найден');
===============================