Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Инстолятор

Delphi , Программа и Интерфейс , Инсталяция

Инстолятор

Однажды известный галерейщик Марат Гельман ставил на свой домашний компьютер Виндоус. Через час он понял, что это геморрой. Через два часа - он за#лся. Через три - сообразил, что этот процесс лишен всякого смысла. Через четыре - он начал находить своеобразную красоту в перекрестных ссылках и смене окошек. Через пять - он решил, что нормальный человек этим заниматься не будет. Через шесть - до него дошло, что умные делают как-то по другому. Через семь - у него возникло предположение, что над ним издеваются. Когда на исходе восьмого часа Виндоус все же удалось поставить, Гельман понял, что ставить Виндоус - это тоже искусство. С тех пор, видя что-либо, чем-то напоминающее вышеперичисленное, известный галерейщик с ходу обзывал это инсталляцией.


{ this is a setup program for an application I wrote.
  Maybe it's useful to others who are about to write their
  own Setup-programs.

  Dr. Norbert Hartkamp
  hartkamp@uni-duesseldorf.de
  n-hartkamp@nadeshda.gun.de
}

{file setupscl.pas}
program Setupscl;

uses
  Forms,
  Setupsc1 in 'SETUPSC1.PAS' {Form1};

{$R *.RES}

begin
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

{file setupsc1.pas}
unit Setupsc1;

interface

uses
  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, LZExpand, DdeMan;

const ProgName   = 'SCL90.EXE';
      LZProgName = 'SCL90.EX_';
type
  TForm1 = class(TForm)
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    Panel1: TPanel;
    Label1: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label2: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Panel2: TPanel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    ProgrammpfadEdit: TEdit;
    DatenpfadEdit: TEdit;
    Label11: TLabel;
    Label12: TLabel;
    Panel3: TPanel;
    Label14: TLabel;
    AuswerterEdit: TEdit;
    Label15: TLabel;
    Inst1Edit: TEdit;
    Inst2Edit: TEdit;
    Inst3Edit: TEdit;
    CheckBox1: TCheckBox;
    Panel4: TPanel;
    Image1: TImage;
    Label13: TLabel;
    Label16: TLabel;
    Label17: TLabel;
    DdeClientConv1: TDdeClientConv;
    Image2: TImage;
    Label19: TLabel;
    Label20: TLabel;
    Label18: TLabel;
    Panel5: TPanel;
    Label21: TLabel;
    Label22: TLabel;
    Label23: TLabel;
    Label24: TLabel;
    Label25: TLabel;
    Label26: TLabel;
    procedure FormPaint(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    DialogNo            : byte;
    WinDir              : array [0..144] of char;
    Programmverzeichnis : string[127];
    Datenverzeichnis    : string[127];
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormPaint(Sender: TObject);
var   Rows, Height:Integer;
begin
  Height:=(ClientHeight + 255) div 256;
  for Rows := 0 to 255 do
  begin
    Canvas.Brush.Color := RGB(0,0,Rows);
    Canvas.FillRect(Rect(0,(255-Rows)*Height,ClientWidth,((255-Rows)+1)*Height));
  end;
  Canvas.Font.Size := 32;
  Canvas.Font.Color:= clBlack;
  Canvas.Brush.Style := bsClear;
  Canvas.TextOut(13, 13, 'Setup SCL-90-Auswertung');
  Canvas.Font.Color:= clYellow;
  Canvas.TextOut(10, 10, 'Setup SCL-90-Auswertung');
  Canvas.Font.Size := 11;
  Canvas.Font.Style:= [fsBold];
  Canvas.Font.Color:= clWhite;
  Canvas.TextOut(10, ClientHeight-(ClientHeight div 20), '=AE N.Hartkamp, 1996');
end;

procedure TForm1.FormCreate(Sender: TObject);
var fileHandle: THandle;
    fileBuffer: Array [0..40] of Char;
begin
  BorderStyle := bsNone;
  WindowState := wsMaximized;
  BitBtn1.Top := trunc(ClientHeight * 0.90);
  BitBtn2.Top := trunc(ClientHeight * 0.90);
  BitBtn1.Left:= trunc(ClientWidth  * 0.80);
  BitBtn2.Left:= trunc(ClientWidth  * 0.60);
  DialogNo := 0;
  FillChar(WinDir, SizeOf(WinDir), #0);
  GetWindowsDirectory(WinDir, 144);
  ProgrammpfadEdit.Text := StrPas(WinDir);
  ProgrammpfadEdit.Text := ProgrammpfadEdit.Text[1] + ':\\SCL90R';
  DatenpfadEdit.Text := ProgrammpfadEdit.Text;
  AuswerterEdit.Text := 'Anwendername';

  { Get user name and company name }
  fileHandle := LoadLibrary('USER');

  if fileHandle >= HINSTANCE_ERROR then begin
    If LoadString(fileHandle, 514, @fileBuffer, 40) <> 0 Then
       AuswerterEdit.Text :=3D StrPas(fileBuffer);
    FreeLibrary(fileHandle);
  end;

  Inst1Edit.Text := 'Bezeichnung der Institution';
  Inst2Edit.Text := 'Bezeichnung der Institution (Fortsetzung)';
  Inst3Edit.Text := '- z.B.: Angabe der Abteilung -';
  CheckBox1.Checked := true;

  Panel1.Left := (ClientWidth  div 2) - (Panel1.Width  div 2);
  Panel1.Top  := (ClientHeight div 2) - (Panel1.Height div 2);

  Panel2.Left := (ClientWidth  div 2) - (Panel2.Width  div 2);
  Panel2.Top  := (ClientHeight div 2) - (Panel2.Height div 2);

  Panel3.Left := (ClientWidth  div 2) - (Panel3.Width  div 2);
  Panel3.Top  := (ClientHeight div 2) - (Panel3.Height div 2);

  Panel4.Left := (ClientWidth  div 2) - (Panel4.Width  div 2);
  Panel4.Top  := (ClientHeight div 2) - (Panel4.Height div 2);

  Panel5.Left := (ClientWidth  div 2) - (Panel5.Width  div 2);
  Panel5.Top  := (ClientHeight div 2) - (Panel5.Height div 2);
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
  Close;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
var aResultStr : array[0..144] of char;
    strIniPath : array[0..144] of char;
    ResultStr  : string[144];
    fromStruct : TOFStruct;
    toStruct   : TOFStruct;
    ret        : word;
    fromHandle : integer;
    toHandle   : integer;
    BDEOk      : boolean;
    CurPath    : string[144];
    Ok         : Longint;
    i          : word;
    DDE_Link   : Boolean;
    Macro      : string;


  function iif(cond : boolean; exp1, exp2 : string) : string;
  begin
    if cond then result := exp1 else result := exp2;
  end;

begin
  if DialogNo = 0 then begin
    ret := GetProfileString('IDAPI', 'CONFIGFILE01', 'NIX', aResultStr,
 80);
    ResultStr := StrPas(aResultStr);
    BDEOk := (ResultStr <> 'NIX') and FileExists(ResultStr);
    if not BDEOk then begin
      Panel1.Hide;
      MessageDlg('Installationsfehler:'+#13#13+
                 'Bevor Sie das SCL-90 Auswertungsprogramm installieren'+
#13+
                 'k=F7nnen, m=B3ssen Sie die Database-Engine installieren
.'+#13#13+
                 'F=B3hren Sie dazu das Program SETUP.EXE von'+#13+
                 'der BDE-Diskette 1 aus.', mtError, [mbOk], 0);
      Close;
    end;
  end;
  Inc(DialogNo);
  case DialogNo of
    1: begin
         Panel1.Hide;
         Panel2.Show;
         ProgrammpfadEdit.SetFocus;
       end;
    2: begin
         GetDir(0, CurPath);
         Ok  := 0;
         ret := IOResult;
         {$I-}
         ChDir(ProgrammpfadEdit.Text);
         if IOResult <> 0 then ok := 1;
         ChDir(DatenpfadEdit.Text);
         if IOResult <> 0 then if ok = 0 then ok := 2 else ok := 3;
         if ok <> 0 then begin
           case ok of
             1 : CurPath := 'Das Programmverzeichnis ist ';
             2 : CurPath := 'Das Datenverzeichnis ist ';
             3 : CurPath := 'Programm- und Datenverzeichnis sind ';
           end;
           Panel2.Hide;
           if MessageDlg(CurPath + 'nicht vorhanden'+#13+
                        iif(ok=3,'Sollen die Verzeichnisse ', 'Soll das
 Verzeichnis ') +
                        'angelegt werden?', mtConfirmation, [mbYes, mbNo]
, 0) = mrNo
             then begin
               Panel2.Show;
               Dec(DialogNo);
               if odd(Ok) then ProgrammpfadEdit.SetFocus
                          else DatenpfadEdit.SetFocus;
             end else begin
               MkDir(ProgrammpfadEdit.Text);
               MkDir(DatenpfadEdit.Text);
               DialogNo := 2;
               ret := IOResult;
               Ok  := 0;
             end;
         end;
         ChDir(CurPath);
         if Ok = 0 then begin
           Panel2.Hide;
           Panel3.Show;
           AuswerterEdit.SetFocus;
         end;
       end;
    3: begin
         Panel3.Hide;
         Panel4.Show;
         Invalidate;
         Application.ProcessMessages;
         ResultStr := ProgrammpfadEdit.Text;
         if ResultStr[length(ResultStr)] <> '\\' then ResultStr := ResultStr
         + '\\';
         StrPCopy(strIniPath, ResultStr + 'SCL90.INI');
         WritePrivateProfileString('Passwort', 'Passwort', '=C1=C2=BF',
         strIniPath);

         StrPCopy(aResultStr, DatenpfadEdit.Text);
         WritePrivateProfileString('Vorgaben', 'Datenpfad', aResultStr,
         strIniPath);

         StrPCopy(aResultStr, Inst1Edit.Text);
         WritePrivateProfileString('Vorgaben', 'Inst1'    , aResultStr,
         strIniPath);

         StrPCopy(aResultStr, Inst2Edit.Text);
         WritePrivateProfileString('Vorgaben', 'Inst2'    , aResultStr,
         strIniPath);

         StrPCopy(aResultStr, Inst3Edit.Text);
         WritePrivateProfileString('Vorgaben', 'Inst3'    , aResultStr,
         strIniPath);

         StrPCopy(aResultStr, AuswerterEdit.Text);
         WritePrivateProfileString('Vorgaben', 'Auswerter', aResultStr,
         strIniPath);

         WritePrivateProfileString('Vorgaben', 'TWerte',    '1', strIniPath);

         fromHandle := LZOpenFile(LZProgName, fromStruct, OF_READ);
         ResultStr  := ProgrammpfadEdit.Text;
         if ResultStr[length(ResultStr)] <> '\\' then ResultStr := ResultStr
         + '\\';
         StrPCopy(aResultStr, ResultStr+ProgName);
         toHandle   := LZOpenFile(aResultStr, toStruct, OF_CREATE);
         ok := LZCopy(fromHandle, toHandle);
         if ok < 0 then begin
           case ok of
             LZERROR_BADINHANDLE  : ResultStr := 'Das Handle, das die
             Quelldatei bezeichnet, ist nicht g=B3ltig.';
             LZERROR_BADOUTHANDLE : ResultStr := 'Das Handle, das die
             Zieldatei bezeichnet, ist nicht g=B3ltig.';
             LZERROR_BADVALUE     : ResultStr := 'Der eingegebene Parameter
             ist au=DFerhalb des erlaubten Bereichs.';
             LZERROR_GLOBALLOC    : ResultStr := 'F=B3r die ben=F7tigten
             Puffer steht nicht gen=B3gend Speicher zu'+ 'Verf=B3gung.';
             LZERROR_GLOBLOCK     : ResultStr := 'Das Handle, das die
             internen Datenstrukturen bezeichnet, ist nicht'+
                                                 'g=B3ltig.';
             LZERROR_READ         : ResultStr := 'Die Quelldatei hat ein
             ung=B3ltiges Format.';
             LZERROR_UNKNOWNALG   : ResultStr := 'Die Quelldatei ist mi=
t einem unbekannten Algorithmus komprimiert worden.';
             LZERROR_WRITE        : ResultStr := 'Es steht nicht gen=B3=
gend Platz f=B3r die Ausgabedatei zur Verf=B3gung.';
           end;
           MessageDlg('Fehler beim Expandieren von SCL90.EXE:'+#13#13+
                      ResultStr, mtError, [mbOk], 0);
         end else
         begin
           Panel4.Hide;
           Ok := 0;
           with DdeClientConv1 do begin
             DDE_Link := FALSE;
             DDE_LINK := SetLink('ProgMan','ProgMan');
             if DDE_LINK = TRUE then
             begin
               OpenLink;
               Macro := ' [CreateGroup ("SCL-90-Auswertung")]';
               StrPCopy (aResultStr, Macro);
               if not ExecuteMacro(aResultStr, False) then
                 MessageDlg('Programmgruppe konnte nicht eingerichtet
                 werden...',
                            mtInformation, [mbOK],  0) else
               begin
                 Macro := ' [ShowGroup("SCL90AUS.GRP",1)]';
                 StrPCopy (aResultStr, Macro);
                 ExecuteMacro(aResultStr, False);
                 ResultStr  := ProgrammpfadEdit.Text;
                 if ResultStr[length(ResultStr)] <> '\\'
                   then ResultStr := ResultStr + '\\'+ProgName;

                 Macro := ' [AddItem('+ResultStr+
                          ', "SCL-90-Eingabe", )]';
                 StrPCopy (aResultStr, Macro);
                 if not ExecuteMacro(aResultStr, False) then
                   MessageDlg('Programm konnte nicht in Gruppe eingef=B3g=
t werden...',
                              mtInformation, [mbOK],  0) else
                 begin
                   Panel4.Hide;
                   Panel5.Show;
                 end;
               end;
               CloseLink;
             end; { if DDE_LINK = TRUE }
           end; { with DdeClientConv1 do }
         end; { ok > 0 }
       end { DialogNo = 3 }
    else Close; { => end of program }
  end; { of case }
end; { TForm1.BitBtn1Click }

end.

{ file setupscl.dfm }
object Form1: TForm1
  Left = 200
  Top = 99
  Width = 435
  Height = 300
  Caption = 'Form1'
  Font.Color = clWindowText
  Font.Height = -13
  Font.Name = 'System'
  Font.Style = []
  PixelsPerInch = 96
  TextHeight = 16
end


{ file setupsc1.dfm }
object Form1: TForm1
  Left = -4
  Top = -4
  Width = 648
  Height = 488
  BorderIcons = []
  Caption = 'Form1'
  Color = clBlack
  Font.Color = clBlack
  Font.Height = -43
  Font.Name = 'Arial'
  Font.Style = [fsBold, fsItalic]
  PixelsPerInch = 96
  WindowState = wsMaximized
  OnCreate = FormCreate
  OnPaint = FormPaint
  TextHeight = 49
  object BitBtn1: TBitBtn
    Left = 648
    Top = 512
    Width = 97
    Height = 33
    Caption = 'Weiter...'
    Font.Color = clBlack
    Font.Height = -13
    Font.Name = 'System'
    Font.Style = [fsBold]
    ParentFont = False
    TabOrder = 0
    OnClick = BitBtn1Click
    Kind = bkOK
  end
  object BitBtn2: TBitBtn
    Left = 528
    Top = 512
    Width = 97
    Height = 33
    Font.Color = clBlack
    Font.Height = -13
    Font.Name = 'System'
    Font.Style = [fsBold]
    ParentFont = False
    TabOrder = 1
    OnClick = BitBtn2Click
    Kind = bkCancel
  end
  object Panel1: TPanel
    Left = 128
    Top = 112
    Width = 400
    Height = 217
    TabOrder = 2
    object Label1: TLabel
      Left = 25
      Top = 40
      Width = 147
      Height = 16
      Caption = 'Herzlich Willkommen! '
      Font.Color = clBlack
      Font.Height = -13
      Font.Name = 'System'
      Font.Style = [fsBold]
      ParentFont = False
    end
    object Label3: TLabel
      Left = 25
      Top = 64
      Width = 294
      Height = 16
      Caption = 'Dieses Setup-Programm richtet das SCL-90-R'
      Font.Color = clBlack
      Font.Height = -13
      Font.Name = 'System'
      Font.Style = [fsBold]
      ParentFont = False
    end
    object Label4: TLabel
      Left = 25
      Top = 80
      Width = 266
      Height = 16
      Caption = 'Eingabe- und Auswertungsprogramm auf '
      Font.Color = clBlack
      Font.Height = -13
      Font.Name = 'System'
      Font.Style = [fsBold]
      ParentFont = False
    end
    object Label5: TLabel
      Left = 25
      Top = 96
      Width = 126
      Height = 16
      Caption = 'Ihrer Festplatte ein.'
      Font.Color = clBlack
      Font.Height = -13
      Font.Name = 'System'
      Font.Style = [fsBold]
      ParentFont = False
    end
    object Label2: TLabel
      Left = 25
      Top = 120
      Width = 337
      Height = 16
      Caption = 'Wenn Sie das Programm nicht installieren m=F7chten,'
      Font.Color = clBlack
      Font.Height = -13
      Font.Name = 'System'
      Font.Style = [fsBold]
      ParentFont = False
    end
    object Label6: TLabel
      Left = 25
      Top = 136
      Width = 265
      Height = 16
      Caption = 'k=F7nnen Sie den Vorgang jetzt abbrechen.'
      Font.Color = clBlack
      Font.Height = -13
      Font.Name = 'System'
      Font.Style = [fsBold]
      ParentFont = False
    end
    object Label7: TLabel
      Left = 25
      Top = 160
      Width = 341
      Height = 16
      Caption = 'Um fortzufahren dr=B3cken Sie bitte die Eingabetaste..=
.'
      Font.Color = clBlack
      Font.Height = -13
      Font.Name = 'System'
      Font.Style = [fsBold]
      ParentFont = False
    end
  end
  object Panel3: TPanel
    Left = 120
    Top = 104
    Width = 401
    Height = 225
    Font.Color = clBlack
    Font.Height = -13
    Font.Name = 'System'
    Font.Style = []
    ParentFont = False
    TabOrder = 4
    Visible = False
    object Label14: TLabel
      Left = 16
      Top = 22
      Width = 64
      Height = 16
      Caption = 'Auswerter'
    end
    object Label15: TLabel
      Left = 16
      Top = 70
      Width = 260
      Height = 16
      Caption = 'Bezeichnung der Institution (drei Zeilen)'
    end
    object AuswerterEdit: TEdit
      Left = 16
      Top = 40
      Width = 177
      Height = 24
      TabOrder = 0
      Text = 'AuswerterEdit'
    end
    object Inst1Edit: TEdit
      Left = 16
      Top = 88
      Width = 345
      Height = 24
      TabOrder = 1
      Text = 'Inst1Edit'
    end
    object Inst2Edit: TEdit
      Left = 16
      Top = 120
      Width = 345
      Height = 24
      TabOrder = 2
      Text = 'Inst2Edit'
    end
    object Inst3Edit: TEdit
      Left = 16
      Top = 152
      Width = 345
      Height = 24
      TabOrder = 3
      Text = 'Inst3Edit'
    end
    object CheckBox1: TCheckBox
      Left = 16
      Top = 184
      Width = 161
      Height = 17
      Caption = 'Anzeige mit T-Werten'
      TabOrder = 4
    end
  end
  object Panel2: TPanel
    Left = 128
    Top = 112
    Width = 401
    Height = 185
    TabOrder = 3
    Visible = False
    object Label8: TLabel
      Left = 16
      Top = 16
      Width = 274
      Height = 16
      Caption = 'Bitte geben Sie das Programmverzeichnis'
      Font.Color = clBlack
      Font.Height = -13
      Font.Name = 'System'
      Font.Style = [fsBold]
      ParentFont = False
    end
    object Label9: TLabel
      Left = 16
      Top = 32
      Width = 198
      Height = 16
      Caption = 'und das Datenverzeichnis ein:'
      Font.Color = clBlack
      Font.Height = -13
      Font.Name = 'System'
      Font.Style = [fsBold]
      ParentFont = False
    end
    object Label10: TLabel
      Left = 16
      Top = 68
      Width = 71
      Height = 16
      Caption = 'Programm:'
      Font.Color = clBlack
      Font.Height = -13
      Font.Name = 'System'
      Font.Style = [fsBold]
      ParentFont = False
    end
    object Label11: TLabel
      Left = 16
      Top = 100
      Width = 42
      Height = 16
      Caption = 'Daten:'
      Font.Color = clBlack
      Font.Height = -13
      Font.Name = 'System'
      Font.Style = [fsBold]
      ParentFont = False
    end
    object Label12: TLabel
      Left = 14
      Top = 136
      Width = 341
      Height = 16
      Caption = 'Um fortzufahren dr=B3cken Sie bitte die Eingabetaste...'
      Font.Color = clBlack
      Font.Height = -13
      Font.Name = 'System'
      Font.Style = [fsBold]
      ParentFont = False
    end
    object ProgrammpfadEdit: TEdit
      Left = 104
      Top = 64
      Width = 225
      Height = 24
      Font.Color = clBlack
      Font.Height = -13
      Font.Name = 'System'
      Font.Style = []
      ParentFont = False
      TabOrder = 0
      Text = 'ProgrammpfadEdit'
    end
    object DatenpfadEdit: TEdit
      Left = 104
      Top = 96
      Width = 225
      Height = 24
      Font.Color = clBlack
      Font.Height = -13
      Font.Name = 'System'
      Font.Style = []
      ParentFont = False
      TabOrder = 1
      Text = 'DatenpfadEdit'
    end
  end
  object Panel4: TPanel
    Left = 152
    Top = 160
    Width = 337
    Height = 113
    Font.Color = clBlack
    Font.Height = -13
    Font.Name = 'System'
    Font.Style = []
    ParentFont = False
    TabOrder = 5
    Visible = False
    object Image1: TImage
      Left = 256
      Top = 40
      Width = 33
      Height = 33
      Picture.Data = {
        055449636F6E0000010001002020100000000000E80200001600000028000000
        2000000040000000010004000000000080020000000000000000000000000000
        0000000000000000000080000080000000808000800000008000800080800000
        C0C0C000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000
        FFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF333333FFFFFFFFFFFFFFFFF
        FFFFFFFFFF33FF33FFFFF11FFFFFF1111FFFFFFFFFF3FFFFFFFFFFF115FF11FF
        1155FFFFFFF33FFFFFFFFFFF115511F511F55FFFFFF33FFFFFFFFF11111511F5
        11F55FFFFFF33FFFFFFFF11FF11511F511F55444FFF33FFFFFFFF11F511F1145
        11F55FF4FFFF33FFFFF9911F5119119511F55FF4FFF3333FFFFFF11F51191199
        11F55FF4FFFFFFFFFFFFFF111199511114F55FF4FFFFFFFFFFFF999995996699
        55556666FFF3333FFFF99FF99F99449944F66FF6FF33FFF33FF99FF99F994499
        64F66F56F33FFFFFFFF99FF99F99F69966F66556F33FFFFFFFF99FF99F996699
        66566556F33FFFFFFFFF9999FFF9999566566556F333FFFFFFFFFF22FFFF6655
        66566556FF33FFFF3FFFFFFF22FF665566566556FFF33FFF33FFFFFFF22FF666
        62556666FFFFF333F3FFFFF222CCF255F2CCCC5FFFFFFFFFFFFFFF22FF22CC25
        5CCFFCC5F3F333FFFFFFFF22AA22FCCFACCAFCCFF33FF33FFFFFFF22FFACCCCC
        ACCAACC1FF3FF33FFFFFFF22FFCCA2CCACCAACCFFFFF333FFFFFFFF22ACCAACC
        ACCAACCFFFFF33FFFFFFFFFFAACCAACCACCAACCFFFF33FFFFFFFFFFFAACCAACC
        ACCAACCFFFF33FF3FFFFFFFFAAFCCCCAA1CCCCFFFFF33F33FFFFFFFFAAFFAA1A
        A11AA1FFFFFF333F3FFFFFFFFAAAA11FAAAA11FFFFFFFFFFFFFFFFFFFFFFFF11
        11FFF11100000000000000000000000000000000000000000000000000000000
        0000000000000000000000000000000000000000000000000000000000000000
        0000000000000000000000000000000000000000000000000000000000000000
        0000000000000000000000000000000000000000000000000000000000000000
        00000000}
    end
    object Label13: TLabel
      Left = 24
      Top = 24
      Width = 117
      Height = 16
      Caption = 'Einrichtung l=F5uft...'
    end
    object Label16: TLabel
      Left = 24
      Top = 48
      Width = 166
      Height = 16
      Caption = 'Erstellen von SCL90.INI...'
    end
    object Label17: TLabel
      Left = 24
      Top = 72
      Width = 198
      Height = 16
      Caption = 'Kopieren der Programmdatei...'
    end
  end
  object Panel5: TPanel
    Left = 120
    Top = 80
    Width = 353
    Height = 281
    Font.Color = clBlack
    Font.Height = -13
    Font.Name = 'System'
    Font.Style = []
    ParentFont = False
    TabOrder = 6
    Visible = False
    object Image2: TImage
      Left = 24
      Top = 16
      Width = 33
      Height = 33
      Picture.Data =3D {
        055449636F6E0000010001002020100000000000E80200001600000028000000
        2000000040000000010004000000000080020000000000000000000000000000
        0000000000000000000080000080000000808000800000008000800080800000
        C0C0C000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000
        FFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF333333FFFFFFFFFFFFFFFFF
        FFFFFFFFFF33FF33FFFFF11FFFFFF1111FFFFFFFFFF3FFFFFFFFFFF115FF11FF
        1155FFFFFFF33FFFFFFFFFFF115511F511F55FFFFFF33FFFFFFFFF11111511F5
        11F55FFFFFF33FFFFFFFF11FF11511F511F55444FFF33FFFFFFFF11F511F1145
        11F55FF4FFFF33FFFFF9911F5119119511F55FF4FFF3333FFFFFF11F51191199
        11F55FF4FFFFFFFFFFFFFF111199511114F55FF4FFFFFFFFFFFF999995996699
        55556666FFF3333FFFF99FF99F99449944F66FF6FF33FFF33FF99FF99F994499
        64F66F56F33FFFFFFFF99FF99F99F69966F66556F33FFFFFFFF99FF99F996699
        66566556F33FFFFFFFFF9999FFF9999566566556F333FFFFFFFFFF22FFFF6655
        66566556FF33FFFF3FFFFFFF22FF665566566556FFF33FFF33FFFFFFF22FF666
        62556666FFFFF333F3FFFFF222CCF255F2CCCC5FFFFFFFFFFFFFFF22FF22CC25
        5CCFFCC5F3F333FFFFFFFF22AA22FCCFACCAFCCFF33FF33FFFFFFF22FFACCCCC
        ACCAACC1FF3FF33FFFFFFF22FFCCA2CCACCAACCFFFFF333FFFFFFFF22ACCAACC
        ACCAACCFFFFF33FFFFFFFFFFAACCAACCACCAACCFFFF33FFFFFFFFFFFAACCAACC
        ACCAACCFFFF33FF3FFFFFFFFAAFCCCCAA1CCCCFFFFF33F33FFFFFFFFAAFFAA1A
        A11AA1FFFFFF333F3FFFFFFFFAAAA11FAAAA11FFFFFFFFFFFFFFFFFFFFFFFF11
        11FFF11100000000000000000000000000000000000000000000000000000000
        0000000000000000000000000000000000000000000000000000000000000000
        0000000000000000000000000000000000000000000000000000000000000000
        0000000000000000000000000000000000000000000000000000000000000000
        00000000}
    end
    object Label19: TLabel
      Left = 24
      Top = 64
      Width = 256
      Height = 16
      Caption = 'Die Einrichtung des SCL-Programms ist'
    end
    object Label20: TLabel
      Left = 24
      Top = 80
      Width = 103
      Height = 16
      Caption = 'abgeschlossen.'
    end
    object Label18: TLabel
      Left = 24
      Top = 112
      Width = 294
      Height = 16
      Caption = 'Das SCL-Programm verwendet ein Passwort, '
    end
    object Label21: TLabel
      Left = 24
      Top = 240
      Width = 260
      Height = 16
      Caption = 'Eingabetaste dr=B3cken, um zu beenden...'
    end
    object Label22: TLabel
      Left = 24
      Top = 128
      Width = 254
      Height = 16
      Caption = 'um bestimmte Programmfunktionen zu '
    end
    object Label23: TLabel
      Left = 24
      Top = 144
      Width = 63
      Height = 16
      Caption = 'sch=B3tzen.'
    end
    object Label24: TLabel
      Left = 24
      Top = 160
      Width = 300
      Height = 16
      Caption = 'Dieses Passwort k=F7nnen Sie jederzeit =F5ndern.'
    end
    object Label25: TLabel
      Left = 24
      Top = 176
      Width = 235
      Height = 16
      Caption = 'Das voreingestellte Passwort lautet:'
    end
    object Label26: TLabel
      Left = 144
      Top = 208
      Width = 39
      Height = 22
      Caption = 'SCL'
      Font.Color = clBlack
      Font.Height = -19
      Font.Name = 'Arial'
      Font.Style = [fsBold]
      ParentFont = False
    end
  end
  object DdeClientConv1: TDdeClientConv
    ServiceApplication = 'ProgMan'
    ConnectMode = ddeManual
    Left = 88
    Top = 32
  end
end

{ file scl90.ex_ (UUencoded) }
begin 644 SCL90.EX_
M4UI$1(CP)S-!90`H``#_35H``0$```#_"``0`/__"``)`/3Q]?!``@,.#1T+
M`03P,PU##5,-8`FZ$``._Q^T"<TAN`%,_\\TAD)!4:&ES_R!P<F]G<F%M_R!R
M97%U:7)E_W,@36EC<F]S_V]F=3D"!7:6YD?V]W<RX-"B3@_?"Z#<H-V@WK\\DY%
M!@'WTP#&`@(*`P,`7P`@`""@\\_(#"1#W!P`-!P!8`(T`/Y8`I`"9`O\\!_O#Q
M`!T0`@/]`*T1$!W_K1$9`/$(4`W_\\0@C`.8`00V_L@,(``.``0,D7@D0$!P"
M@`(!#DL4W2<``!`<+&`$"$W_04E.24-/3@7?4T-,.3`J`@@`_PP`$0`:`"$`
M_R8```9+15)._T5,`T=3D$2015_U-%4@A+15E"ST]!4D25%*`;(/^_`,T_`?D0
MQ1'G;0_%$;8&Q1&.!\\41K:C<$@0(Q1%KZ!*3[03%$5P%Q1&B#P&VQA"^#<41
MH0[%$>&J#"(9T!(PT!)*RA$"M!T0)B!A*B(M`24A1]8V(H\\#)2&AW!$"_[;6
M$0)W]!$"?%0BW5;H$0*Y8"+22"(H^A%K`EAR(GUR(IT%`@'_"7-C;#DP+D4#
M6$5@#:(MLBW"+=3D(M(`S_+"!!8W1U86R?;'DL('2!`8(`;O]O=3D"!A(&9U;G]C
M=3D&EO;F%LA`7_+CP@271S(&_W;FQYC`!A<V]N_R!F;W(@8F5ILVYG`C#\\(6%T
M_2!E?W)E(&UU<W0T,)\\@<V]M9?X@.#`A_#`R1#`@<V5T=3D7!VA`9T;V4Q('5P
M'C'_9B!Y;W4@;&EU:T@P>64\\86YD@C+W=3DV%N0C!O(&UO?V1I9GD@:70P,O\\V
M('5S92!W:?MT:((Q<B!O=3DV[_(&%P<&QI8V'H$#$\\,(,P)T<P9G)E]65S,61U
M,&\\N+2"=3D09XP;6%Y3S!$,&[RW#)DAC/I,7)O<"#[;64),&QI;F4Z_QP@:&%R
M=3D&MA_VUP0'5N:2UD_W5E<W-E;&1O_W)F+F1E&R!N_2TB1FYA9&5S:+]D82YG
M=3D6XZ0`G_(%)E9V%R9'/_+!<@3F]R8F7O<G0@2"-$+"!-?RY$+A0@1/PR1?\\L
M($=3DE<FUA;K]YFO__``"01U5_B>6_L`(>5Y!"?J)"OP(`#E=3DJE$B2K$,OLTVM
M0FS)3:-,CB3?3:U"R_]-K4,!%EVD2TDP*UVM0DU+7:-,:6%=3DTJU"<X%=3DK4*+
MEUS),?W`FD6#[`*+1@;?.T8$?0C*4(E&O_[K!HM&!-50BW]&_HGL7<($PUKY
M?M%=3DX5B`/F<``/]T$_\\V7@"_3GT!I42C3`'K#!AA_B%E_S9,`;@0`%E0D$(^
M8Z-N-F,(/61I4CYC-V(%4VM=3DPY]`GC=3DA_S9N`9!"$6,0QAAKZPT883=3DA<&E>
M`/\\QP%#_-D8!N/T"/62A'``K!B#_`/<F1@%0H1[ZQF`BRF!(`0,&2J$!6V4M
M9'5BIFU0M&"X^P$`MF!"`>C7_A@#<>!FM&(@``=3DQX&8'<9X$=3DD0!Z*01>P=3DS
M(MPE=3DW5B@#YE%&`*@/L^9A1@`^AW_[CU_^AE19]`'H`^9+\\``'4#Z;.S8G:]
M"`MR)?Y0Z.%01E4(DG(&/G(1GG`RHG`V_E`(.\\A@=3D0G*4=3D1@@W1YNG068Y)S
M)G;#=3D13V3G9V!B9ZH2``*RM&",MC(@N`!M=3DA`W#G,=3D)2'H3C=3D`BC(.;G<:,B
MY&?C4$W*!+D`@W+$8CX!0"%R__\\V'`#H7_U0Z,N`_<]C0%>".H$>`)OH1F2`
M9_T^8T6!R_[$4@2A8``!1@3^_U`[!AH`?`:A]QH`*9>"]R88`/\\#1@;$/CH!
M`__XB?B,PHE&_#N)5M]0_(M6XE?*5`\\ZZ#+]-V'*4,=3DM&H(\\J7)Y@(O_4E#_
M4!>`[CYCZ&3]RH5^!#;W_W7\\'9#ZZ*;_?AJ0,<`VB47\\*Y+_^C'`HQP`_P;S
M'@#08)R!=3D5G_#DT>.Y!@`).`0Y(%-Y#Y8+-C>8`D_XG'CO_"!E?_-A@`L'T@
M%7JA2`'WV!Z-!N-IP@)+@Y"`OV6\\@+.2__J#?@8`=3DP/I_YH`Q'X()HH%_SP@
M<C\\\\_W<[L,B3MF`ZD'B!I?YID5B_)H@%_P8<PV$[ST;Z?@:YD_21!AC_`'4$
M5>@(_^O_2#P-=3D095Z/[__NL^/`AU+H/_/AP``'XE_P[TWY'?E%CGDB;&!2#V
M])+\\??N3_.L,//,'=3D:5Q7&-&"/]._P;I7?__=3DOS__W;ZZ&/^@#XVZA1@!4"'
M!DN#C7X&HQ97)G9%@J26%)!"C8]^ZA97`7,$=3D)!""?_`=3D!^#?NP2=3D8\\#Z)S\\
MI:*@IY=3DCQO^#/F(``+``?O\\!0(A&_8I&_?2(@J:4`I!'",!U+-_&!F8``6AS
M`^C;E/O\\J73R#[6_^]X*L0"@<`'IH/\\.;V(`OW$>8+]P'F#G_S9BE$/LK`8Q
MP/>)1OB00HA&^XK[1OL;H!.#?O@`?W8+_T[XL`@^8ZOK+,Z0*-*0),I02/](
M.T;X=3DAJ*5N_[BT;XR)`#^":?B!7_1OAPL#YC@/]^^PUT#8`^-[H48*6VL!IU
MGYR]^':VL747G[;&!0JJL!.P#3YCXW3XO(#"@'>D_I]`Q@9D``&A&/KF@!I#
M93H!B18\\S0&R@097%,5SE8`^Y3B+<!JP9#]CN&#P]U"X`UQY@^P(QG\\&9P`!
MZ)_Y?Y&_4@&9]SY&VF`@90!^@/GZ4&^1H5;:8)=3D&`4AUR":!P#"04%.A5'3!
MV6$B?<`U@<!_^O\\V&@"A6-I@Z4B/PJK%]/ZP^(M&+?J7L'TXW(/^XX;3P-KO
MB/YEH8W[`I'\\*_M&_E.E^NO`Z&'1^6?!1(%@PP(:D8M%LP8]BW#"<`I(^E%>
MZST!+M-`^E%0/0+'`'4+,=3D`,@/I10#WU`TK3`U'3,#T&`/MU!V.Q_NLD/0?[
M`'7V51<]!`!U40PETP%A_5$*W5<(PU.A!`F`^E`4@/^R""S1&O[WP*$^`9FY
M`@![]_D*<E7H3_]\\TUH[T!)BH39`-F!$R]!1-L_09*#YP/Q`A<(*PFIH?-_2
MP`9UPJ,^WX!=3D!*?"HT`!?Y$84X*_4.BT]Z-")N(:?FR"4.BC]Z-$-F",7($-
M<'#W,X!S@T!P8MWW.8#HDOAH?#3XWN56).B(]S=3DAC7Y]W,RDBT;HHT;?@+_<
M`T;DHTC?@-[/HTH!N'S`D$+1X$U0NV:+R!3">,#!$G:_4.CN]EH#NX#^B[@A
MJ^@$/656QK[@&G+68\\'6X+*G4.BMU>/^`<#^Q'X$)HE%RIB`_"#S!JGMXW/0
MH?]&`;$$T^`#PD36X"#S#.CHW>GSYM""D*?1X-%.\\U'V#AWV$)XG]A+HSO8(
M:$#`=3D-\\)@'X$`\\2@H_>>WZ%`?0^*EX#@H(@_A7`!_P9BH9)AP]ZR^W/WN!&U
MIK``_7WGH?_'1OP!`/?K`__#@'[\\T>?_T>>!QV0`'@?^RY`Z1@1U'R:*?T4!
M.D;_=3D18D`"\\",.10)``#,0"T8/_H8/WK!H-^_.<,=3D</C4=3DKRQ@9ES`VQ<7-,
M]F-T<7.`]I12`71E/#9@.A/+-Y*C#1Z.`2``.8`3=3D0_!=3D&"WC-B0@W*.V)"`
M5KBIH+R0_[(.HU[G<`S^.M$&Z#;[Z:<`^ST/T`&`^^F<`%\\]%0%U$/5S"JEP
M_^BK_.F'`#T4YP%U#I)R[P*7_.OG=3D#T%2M"I<78(Z+_C_.MD/20.$@C^\\`%3
M_>M4/0(!_W4)BD8*4.AWW_[K1CT`+A66_OOK.'31!>C__NLW+CT(2A$)_W+0
M2=3D#?!>@3_^NZT`[_0W8,[0(C$4"#P`!6`<#_^HM6_%]>C6;K_A]'@`JEE0+$
M?O\\&)H-]"`!T'Z\\F_W4.HQ`,HQ`(#)!"F1`QP"/PKA-CL0'&X$J$EA2D%ZV3
MF1&)10K@MQ/"'?6D^AV2&(%]`O^QUW4:N/__NOO__R/P%":)51:ZMQ(8(_`:
MZR69$<>/10*RUS,K,R9&(%44,B3M$QP](!X1+:>432+9!3<@42"PUU`@!(#_
M`":-A8``C,+45_$](`XS)A`](!(FY\\9%,$2*B'-2_S;]4F!@4`"_Y@`>=3DJF@
MNO]98/\\V$&!@U1)@8!1@8!8`=3D/\\V(9JS8">&R`">8YR40SR*_O.C@>R6`*$V
M`?^+%C@!HZX`B?,6L(9@BG.)`*&T[P`+!K9S<.E]`-^XY@",VGH3C;Y7:/\\6
M;I`F8&`DTJ`!^LRD&&%R,Q9Y3,>?!T#`)XU^Z*BHMZ46MS*@I+;0->O3B(8^
MF(MP.M^AF@"C1+-AN`#U?Q,W1O@]HT@`QW\\&2@`&`+\\Z[2!`IT0>92U':UVC
M1EQDFNHCP[A0/63K(NLBOV.N`&V+3C"C-B/`.`$S(_Y*-%W+B``#`:'_`04`
M6P`#`*:O`?\\`$:9`JZI``:JF0+BJ0!>F0,FJ0!:JID#.ND3?PD3DND3U6L)$
M^KI$!`*[0Q7R0*K%01KR1"OZ1##R1$&J^D1&\\D10\\D1A^D1FJO)$=3D_I$?/)$
MAO)$EZKZ1)SR1*WZ1++R1,.J^D3(\\D30\\D`2GD`RKP,#`">>0$"24$*^GD!0
M`P(`5YY`5JJB4"V>0&:24+2>0&TJHE`)GD!ZLE2!HE"U0*L!DZI4J))0*)Y`
MMZJ24$2>0-"24*.>0/&JDE"EGD#ZDE"GGD`$KP0#`*2>0"<"8$"JGD`[`F`^
MGD!:"F1OKA)C`(T$BU/T$F0150438SPZ8#V>0%$Z8'U\\ID"4!?\\`")Y`WQP&
M`@`AID"'!K?_`!J>0*4&0V.NU&I@36&_8F`"GD!E!W<#`&BF0(,'_[Q1*P"=3D
MBF`#ID"QBF!]857(@F!MGD#?@F!QGD"UZ8)@<J9`#0B+8Q+ZNF`%GD`J"`,`
M<%JF0"_"8P!?NF`;ID"E>;I@!DYANF`$ID#"ENID`PGK8PCZ8(UA+<KZ8!.F
M0$KZ8&5A70G47U">0&L:<)N>0!H*]EMC`PM38Z`+`@!]79Y`O@L#`+.>0%7*
M0G3>0G3Q0G3]0G2K!PQ#<Q]J=3D$9J=3D%*J:G1P:G1Z:G2&:G0'[PT#`&JF0)L-
M_\\L`%)Y`LZ)PY6`!AF\\.`P!KID#`#I-CJ<["<-5A^<)P!\\1@1*\\/_P`-?&!'
MVG(%*P!GVG`,?&!JZG(-$*KJ=3D'CR=3D(/:<`Y\\8(:N"H(%`,[:<`]\\8-'^&H(#
M`2@0`P`I*IY`."J`*IY`02J`36";`98J@*4!9V`J@"62GD"Q*H`=3D<;XJ@"5Q
MUDHJ@&R>0.0J@*UA[BJ`?K5@`101`P"NGD!5)GJ`K9Y`.7J`.:9`7T,1_P`*
MID!-DH!6K8``4I*`%:9`7)*$U6:2@!FF0&NB@P%][Q$!`#&>0(P1!*X@0`4`
MGY*`$'Q@HOC2@MZ-?&!%58OL'O\\+P'1-C`:X`'^)-I@`B3Z:3##_G`")'IX`
MC`:'H``S4J4.,/*R]X`@_O*R,]*HP'4&0O^H`G4!0H@6PGX<0,``__^+Y>8P
M_[C_3,TA65OK_P0SR3/;H[(`_XO!"\\-T#(/[__]T!X[#)HL>]H^@#K0*D+8`
M@S[UN%H"1EHV-KD*`/^@L@`RY+O5`/_H30"Y$`"AMK\\`N]T`Z$%:,;OOX@#H
M.!*1N\\0`?QY34%"X$!")`_J(D+1*D,0>K@",7<!:D!,SP$HPHX5`_[H`N-(`
M#E`&_U/+PS/2]_&`_\\(P@/HZ<@.`_\\('2X@7"\\!U_^K#4&]R=3D&EO_VYS($-O
M<'ER_VEG:'0@*&,I_R`Q.3@S+#DR_R!";W)L86YDW/*"DK#HD@!#D7(#?I6@
MN,L`Z1;_':7_BTX(BUX*Z'_]`2BD!@"XS`#IV_;^\\H*X`+24BP[_H@#C%8[!
M)@/_!@@`@](`)HMO#@H`.V:@=3D>M#DGCR@A.0B0,+TG4>9:+U&&N@.V^@<P0F
MH>4(=3D*CH0Y+W@%"CL/\\#.P:D`'(?Z'](`'-%@SZD`^#_(*&P`XL>I@!_@^L,
M.\\-W$L>@?^L+Z$,`<R;3H'_H(0!S'J&J73#_K`!T"/\\VL`//_QZJ`#K0TZ!W
MM?]R`S/`F</_-K&H+)`5-#K0<@>)`_CMPSI@)/QEHA*.P=3D_H6@!S$W6G[NB_
M#@!R"^A%#I"B_P"+PXS"PU"A_Z8`Z+'_<C&._\\(S__RX5%"K/S/`J[@,`&NQ
M6[#=3D+7"P4(S`9:(('G^.V8<&"@`?:['_6*M8P[L$`(O_\\R:+'X/[`7+_(R:+
M5P(KT'+_[B:+#W0-B_OVYK")#3T@`HO/)F^)#"8I;Z#XP_>`]V7C9RRRCL.+
MV?\\F@3X``%10=3D7]3]L,#=3D4Z^E[#__B:+-`OV=3D`;_.]YW\\W0\\)HG?-R:)1P)M
MHB:C_P@`!0P`.P:F_P!T0^@%`":)]QV+WYFP`W<")NL[-Z40BZ'P!R:+_T0"
M)@%'`OC#??FM`#O#=3D/A3'Y6Y[HRD);0SP(QDD!;^>*#:=3D!2AH@".]\\`FH7B@
MPW7V)OV)6,",P*.B`.O_O#/`AP:Z`,OW@SZZWR`!RZ&Z_P#IP/R+]#:._BK`
M.U4"?P=3D\\%-\\F.P5R#Y/`!GS_"'\\')CM%!'?_`<NXR0#IF/S_N-<`Z9+\\!0#_
M!'(9*\\1S%?>WV#8[BK!R#,;`#OZCH#:C#@#+N,K_`.EN_+HSTHO_W!XVQ'\\(
M-L7W=3DP3\\;+&PUZNX_8!QLJNKC45TJ^V,;;#__P32,\\"Y_PX`\\ZL&5P97^[E/
MDJ$)K#K(=3DO\\$BLCC"*P*P/]T`ZKB^#+`JG[3,A_*"`"+W.7`CPHVBT<B\\D+0
M[Q$,BD+0"([Q,[@2\\!&.$+K_L=3D?K"+JRU^O/`[JSU_*"F1&+1?\\"/;'7=3D!(]
MLO_7=3D`T]L-=3DT$/W'>\\!F`.LD4@:_5P[H*`!:6M%5_0)<U;L0`.A4`,UT3R*P
MUT.1CR"P`,_K`K`!=3D-8L(G08]"LAAM`(C]%G`.L8_U"[%`#H&`!8_BG0#+L<
M`.@-`%RUVA31)O\\9]X`#U)#W7P?#XL,$)L55_PPFBTT$)HL=3DW[0_S2%RQB!%
M"JY:T,=3D%"#;1!/G1"OK@,.X8Z#/))H=3D-]0@GX4`LX`<KP73'`[AE.^)([5CF
M`C/YP&GC&^*+'8/[!(]V!K0^@^./('_#-?<F@7\\N(2XFBW?_""8[=3DPIT*QZ_
M!E-2)L57(N!?_PH'`]H#\\OS__]`K\\HS"6P<?;R:)=3DPCRD`C#C]'_:`##4%%2
M5P;_4^A"`5L'7UJ[65BUY76\\PW_#0/ZMX;+7=3D3DFBT_^)N!_""O/*]%S_P0#
MRC/2!B;$_W<,`_ZP(/SS?ZHK_@<FB7^XX-]_!'4)4N[@\\0#76P=3D:DZ#(XN)I
M`*H#]$@+]$$3^,$?\\,C[,\\"_X([:)L1?_PP#^_SSI"O[O-?B-O0-4%)6[N"<
M+D/P7EI8\\I#`2_5TT_]>!KC=3D!C/2Z/_L_G4*)H-_&O);`7TGHH\\@K#P-=3D/\\,
M/!IT$3OS=3D?WSLO##._-T":S_/`IT`4XSP,/WN/(&J?<"`+[D+FDPZ%'_NO<U
MQ?6J];J\\\\PI_PP/H%<7U!E]3)O]?%`[DPS4"^1@[!:KT#+B)!XO_3@:+?@B+
M5@K_1^@]_HO'Q'Y?""O'2*J[T@;,\\OT/TO`+JCOSX/++XP59`,/G\\:KT"";O
MB@<RY%8`BU8&_RO0?@50Z%C^WIWP=3D`J+=3DF$!1NBSF/YR!.+!Q7]0D(GO#;@`
M/=3D'3#;`"^_\\%+""SUW0"M/\\\\@'TP`'0)C3M5,"S@6HD%,R-1D?[1TR^+';@`
M1,WO(?;"@#,CB\\B+9]IU%-L"*0`K`/,'^%$B.B`^((E-&(E=3D_QK'11S__\\=3D%
M>1[W`(CB,](SR000_P)"S2$M@`"#[=3DJCH#/`X,#*B]#\\!!%7$(V5@`"Y@/4`
M*.-SAN`SVSO8]W0@@'40&G0#0W_K\\HO3*]"Y09"P5!-1$5SA%^",VNG`"O;E
MP`8V%/#\\._=3DS_P<#\\0/Y3D_]G_.D_([:9-`\\T@@^M1`&-HI'!"[P.=3D!6O4`!
M)\\1@'IY`,,R"?(>`Q&"$``4!4<1@4G6!QR!`S5%QHD"IGD!YGZ)`M8`!*P(%
M)(*Y-AX@C5%,`P6\\@E>L+B`-<`%<+B`1Q&`6ZBI@''Q@&D8B`P%$4035<;O`
MVF`=3D?&`'7B)7!0`?VF`??&`B;B)7!0`UVF`>?&`X?B)7!0!2VF`@?&!7CB)`
MFBVJ+;HMRBW:+>0F!>0IQ8``,U"T@.0E6T$H2?]N86-T:79E(`<E<RG,4+5!
M6T$O/5M!_U105VEN0W)T^C`Y)3`P)P```27O`0`")\\U0)```OP8C```')LQ0
M*/\\``0$A``$"(O\\``0,D`0$&(_<!`0<P.@0`(`+\\,#WFB%)U;G1I;?]E(&5R
M<F]R(+\\P,#`@873!,3"].LDQ+@`-"I5A)/RF0-U0`#P`_P`+5"91ID!4W%``
MF")`HS#!`>Q@ZX0&3?HF'4$`@#@!,?\\D'D#`P,`D0"%!@%Q!$3-!0DM!&)%%
M05A,\\]<S,S]82C-X0/_QQ1]\\0!%_0&9`6$+Q%9__$?\\1565!:T,1OU41]1'U
M7Y=3D%$;L1%:))\\1_QL4)4O42X15$?$46D0/3^=3DT'_^9$?41D1Y9740O-J0<Y`
M&1&9?-1#FT,1F5$1%/5&_YF9E9EFF555^V9FZ$+YG_F?F;]$F43V;_9X0/,]
M/QU49/9O5IE"'5+?]IEF]F4W6&:9\\V961E0-4/_YF97X5%)[0%1`(O__9E6(
M5%%Z06M!(G%5F4!I4?*/+_9F8A519T")0/)_(LSR5?+,S*9`_FI4(LPE7,_\\
MQ?WS:%,BJB+\\SZS?ROS/\\S^90B+__ZS,S*S*K,'_ELE5S*+34<_W`&M!\\B<J
MS*KC55A"JO%5F43\\`&B)0JK\\S,JAS/G,ET%I4JK_JAJAZQJA=3DD$_:T'ZJJ%O
M'ZJJ$5A)$1&!0``.36=3DM=3DVV';9=3DMIVVW;<=3DMN-=3DMXF<F,2`@$)0P`0,`Z`5`
@!4T1?2%],7U!?0!1?6%]<7V!?9%]H7VQ?<%]`-%]X7L`
`
end

Статья Инстолятор раздела Программа и Интерфейс Инсталяция может быть полезна для разработчиков на Delphi и FreePascal.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Инсталяция ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100
29.03.2024 11:37:56/0.033836126327515/0