Однажды известный галерейщик Марат Гельман ставил на свой домашний компьютер Виндоус.
Через час он понял, что это геморрой.
Через два часа - он за#лся.
Через три - сообразил, что этот процесс лишен всякого смысла.
Через четыре - он начал находить своеобразную красоту в перекрестных ссылках и смене окошек.
Через пять - он решил, что нормальный человек этим заниматься не будет.
Через шесть - до него дошло, что умные делают как-то по другому.
Через семь - у него возникло предположение, что над ним издеваются.
Когда на исходе восьмого часа Виндоус все же удалось поставить, Гельман понял, что ставить Виндоус - это тоже искусство.
С тех пор, видя что-либо, чем-то напоминающее вышеперичисленное, известный галерейщик с ходу обзывал это инсталляцией.
{ 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;
interfaceuses
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 dobegin
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 thenbeginIf 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;
beginif cond then result := exp1 else result := exp2;
end;
beginif DialogNo = 0 thenbegin
ret := GetProfileString('IDAPI', 'CONFIGFILE01', 'NIX', aResultStr,
80);
ResultStr := StrPas(aResultStr);
BDEOk := (ResultStr <> 'NIX') and FileExists(ResultStr);
ifnot BDEOk thenbegin
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 thenif ok = 0 then ok := 2 else ok := 3;
if ok <> 0 thenbegincase 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
thenbegin
Panel2.Show;
Dec(DialogNo);
if odd(Ok) then ProgrammpfadEdit.SetFocus
else DatenpfadEdit.SetFocus;
endelsebegin
MkDir(ProgrammpfadEdit.Text);
MkDir(DatenpfadEdit.Text);
DialogNo := 2;
ret := IOResult;
Ok := 0;
end;
end;
ChDir(CurPath);
if Ok = 0 thenbegin
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 thenbegincase 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);
endelsebegin
Panel4.Hide;
Ok := 0;
with DdeClientConv1 dobegin
DDE_Link := FALSE;
DDE_LINK := SetLink('ProgMan','ProgMan');
if DDE_LINK = TRUEthenbegin
OpenLink;
Macro := ' [CreateGroup ("SCL-90-Auswertung")]';
StrPCopy (aResultStr, Macro);
ifnot ExecuteMacro(aResultStr, False) then
MessageDlg('Programmgruppe konnte nicht eingerichtet
werden...',
mtInformation, [mbOK], 0) elsebegin
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);
ifnot ExecuteMacro(aResultStr, False) then
MessageDlg('Programm konnte nicht in Gruppe eingef=B3g=
t werden...',
mtInformation, [mbOK], 0) elsebegin
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
endobject 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
endobject 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 = Falseendobject 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 = Falseendobject 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 = Falseendobject 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 = Falseendobject 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 = Falseendobject 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 = Falseendobject 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 = Falseendendobject 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 = Falseobject Label14: TLabel
Left = 16
Top = 22
Width = 64
Height = 16
Caption = 'Auswerter'
endobject Label15: TLabel
Left = 16
Top = 70
Width = 260
Height = 16
Caption = 'Bezeichnung der Institution (drei Zeilen)'
endobject AuswerterEdit: TEdit
Left = 16
Top = 40
Width = 177
Height = 24
TabOrder = 0
Text = 'AuswerterEdit'
endobject Inst1Edit: TEdit
Left = 16
Top = 88
Width = 345
Height = 24
TabOrder = 1
Text = 'Inst1Edit'
endobject Inst2Edit: TEdit
Left = 16
Top = 120
Width = 345
Height = 24
TabOrder = 2
Text = 'Inst2Edit'
endobject Inst3Edit: TEdit
Left = 16
Top = 152
Width = 345
Height = 24
TabOrder = 3
Text = 'Inst3Edit'
endobject CheckBox1: TCheckBox
Left = 16
Top = 184
Width = 161
Height = 17
Caption = 'Anzeige mit T-Werten'
TabOrder = 4
endendobject Panel2: TPanel
Left = 128
Top = 112
Width = 401
Height = 185
TabOrder = 3
Visible = Falseobject 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 = Falseendobject 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 = Falseendobject 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 = Falseendobject 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 = Falseendobject 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 = Falseendobject 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'
endobject 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'
endendobject 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 = Falseobject 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}endobject Label13: TLabel
Left = 24
Top = 24
Width = 117
Height = 16
Caption = 'Einrichtung l=F5uft...'
endobject Label16: TLabel
Left = 24
Top = 48
Width = 166
Height = 16
Caption = 'Erstellen von SCL90.INI...'
endobject Label17: TLabel
Left = 24
Top = 72
Width = 198
Height = 16
Caption = 'Kopieren der Programmdatei...'
endendobject 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 = Falseobject 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}endobject Label19: TLabel
Left = 24
Top = 64
Width = 256
Height = 16
Caption = 'Die Einrichtung des SCL-Programms ist'
endobject Label20: TLabel
Left = 24
Top = 80
Width = 103
Height = 16
Caption = 'abgeschlossen.'
endobject Label18: TLabel
Left = 24
Top = 112
Width = 294
Height = 16
Caption = 'Das SCL-Programm verwendet ein Passwort, '
endobject Label21: TLabel
Left = 24
Top = 240
Width = 260
Height = 16
Caption = 'Eingabetaste dr=B3cken, um zu beenden...'
endobject Label22: TLabel
Left = 24
Top = 128
Width = 254
Height = 16
Caption = 'um bestimmte Programmfunktionen zu '
endobject Label23: TLabel
Left = 24
Top = 144
Width = 63
Height = 16
Caption = 'sch=B3tzen.'
endobject Label24: TLabel
Left = 24
Top = 160
Width = 300
Height = 16
Caption = 'Dieses Passwort k=F7nnen Sie jederzeit =F5ndern.'
endobject Label25: TLabel
Left = 24
Top = 176
Width = 235
Height = 16
Caption = 'Das voreingestellte Passwort lautet:'
endobject 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 = Falseendendobject DdeClientConv1: TDdeClientConv
ServiceApplication = 'ProgMan'
ConnectMode = ddeManual
Left = 88
Top = 32
endend{ file scl90.ex_ (UUencoded) }