Инстолятор
{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»