В помощь начинающим программистам. Набор заготовок для создания программ на 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('Внимание! Файл записей не найден');

===============================


Перейти на Главную


<<НАЗАД