Инстолятор

{codecitation class=»brush: pascal; gutter: false;» width=»600px»}

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

{ 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»

Добавить комментарий