Xpacket/XPSTOP.PAS

352 lines
9.8 KiB
Plaintext
Raw Permalink Normal View History

2019-05-15 00:31:19 +02:00
{<7B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
<20> <20>
<20> X - P a c k e t <20>
<20> <20>
<20> <20>
<20> X P S T O P . P A S <20>
<20> <20>
<20> Routinen f<>r die Auwertung der STOP-Kompression und Codierung. <20>
<20> <20>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>}
Function STOPCompress (Kanal : Byte; Zeile : String; Code : Byte) : String;
Var Hstr : String;
t : Word;
s : Word;
i : Byte;
a : Integer;
b,c : Byte;
ch : Char;
long : Boolean;
Begin
if Zeile > '' then
begin
Zeile := PackIt(Zeile);
FillChar(Hstr,SizeOf(Hstr),0);
a := 7;
b := 1;
long := false;
i := 0;
While (i < length(Zeile)) and not long do
begin
inc(i);
t := HTable[ord(Zeile[i])].Tab;
s := $8000;
C := 0;
While (C < HTable[ord(Zeile[i])].Len) and not long do
begin
inc(C);
if t and s = s then Hstr[b] := Chr(ord(Hstr[b]) + 1 shl a);
s := s shr 1;
dec(a);
if a < 0 then
begin
a := 7;
inc(b);
if b > 254 then long := true;
end;
end;
Hstr[0] := chr(b);
end;
Hstr := CodeIt(Kanal, Hstr, Code);
if (length(Hstr) > length(Zeile)) or long then
begin
Hstr := CodeIt(Kanal, Zeile, Code);
Hstr := Chr(length(Hstr)) + Hstr;
ch := #255;
end else ch := Chr(length(Hstr));
STOPCompress := ch + Hstr;
end else STOPCompress := '';
End;
Function STOPDeCompress (Kanal : Byte; Zeile2 : String; Code : Byte) : String;
Var Zeile,
Hstr : String;
b,i,l : Byte;
a : Integer;
t,t2 : Word;
Bit : LongInt;
ch : Char;
Begin
Zeile := Zeile2;
ch := Zeile[1];
delete(Zeile,1,1);
if ch = #255 then delete(Zeile,1,1);
Zeile := DeCodeIt(Kanal, Zeile, Code);
if (ch < #255) and (Zeile[0] > #0) then
begin
Hstr := '';
l := 0;
Bit := 0;
for i := 1 to length(Zeile) do
begin
Bit := (Bit shl 8) or ord(Zeile[i]);
l := Byte(l + 8);
a := 0;
Repeat
b := HTable[a].Len;
if l >= b then
begin
t := HTable[a].Tab;
t2 := Word(Bit shr (l-b)) shl (16-b);
if t = t2 then
begin
Hstr := Hstr + chr(a);
l := l - b;
a := -1;
end;
end;
inc(a);
Until (a > 257) or (l < 3);
end;
end else Hstr := Zeile;
Hstr := UnPackIt(Hstr);
if Kanal = 0 then
begin
t := K[0]^.StopCode;
K[0]^.StopCode := G^.DetCode;
if STOPCompress(0, Hstr, Code) <> Zeile2 then
begin
Hstr := Zeile2;
end;
K[0]^.StopCode := t;
end;
STOPDeCompress := Hstr;
End;
Function PMak (Nr : Byte) : String;
Begin
if Nr = 53 then PMak := ' <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> List ͻ' + M1
else if Nr = 54 then PMak := ' <20>Msg.-#<23>PFRAKS<4B>KB<4B> An @ BBS <20> Von <20>Dat./Zeit<69> Titel <20>' + M1
else if Nr = 55 then PMak := ' <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͹' + M1
else if Nr = 56 then PMak := ' <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ' + M1
else if Nr = 57 then PMak := ' <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Read ͻ' + M1
else if Nr = 58 then PMak := ' <20>Msg.-#<23>PFRAKS<4B> Byte<74> An @ BBS <20> Von <20>Dat./Zeit<69>Geschrbn.<2E> Lifet. <20>' + M1
else if Nr = 59 then PMak := ' <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͹' + M1
else if Nr = 60 then PMak := ' <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ' + M1
else if Nr = 61 then PMak := ' <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Send ͻ' + M1
else if Nr = 62 then PMak := ' <20>Msg.-#<23>PFRAKS<4B> Byte<74> An @ BBS <20> Von <20>Dat./Zeit<69>Lt.<2E> Bulletin-ID <20>' + M1
else if Nr = 63 then PMak := ' <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͹' + M1
else if Nr = 64 then PMak := ' <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͹' + M1
else if Nr = 65 then PMak := ' <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ' + M1
else PMak := '';
End;
Function PackIt (Zeile : String) : String;
Var i, j,
az : Integer;
PM,
Hstr : String;
Begin
Hstr := '';
i := 1;
while i <= length(Zeile) - 3 do
begin
az := 0;
for j := 53 to maxPMak do
begin
PM := PMak(j);
if Copy(Zeile,i,length(PM)) = PM then
begin
az := 1;
Hstr := Hstr + chr(255) + chr(255) + chr(j-1);
i := i + length(PM);
j := maxPMak;
end;
end;
if az = 0 then
begin
if Zeile[i] = Zeile[i+1] then
begin
if (Zeile[i] = Zeile[i+2]) and (Zeile[i] = Zeile[i+3]) then
begin
az := 4;
while (i + az <= length(Zeile)) and (Zeile[i] = Zeile[i+az]) do
az := az + 1;
Hstr := Hstr + chr(255) + chr(az) + Zeile[i];
i := i + az - 1;
end;
end;
if az = 0 then
begin
Hstr := Hstr + Zeile[i];
if Zeile[i] = chr(255) then Hstr := Hstr + chr(0);
end;
i := i + 1;
end;
end;
while i <= length(Zeile) do
begin
Hstr := Hstr + Zeile[i];
if Zeile[i] = chr(255) then Hstr := Hstr + chr(0);
i := i + 1;
end;
PackIt := Hstr;
End;
Function UnPackIt (Zeile : String) : String;
Var i,
az : Integer;
Hstr : String;
Begin
Hstr := '';
i := 1;
while i <= length(Zeile) do
begin
if Zeile[i] = chr(255) then
begin
i := i + 1;
if Zeile[i] = chr(0) then Hstr := Hstr + chr(255)
else if Zeile[i] = chr(255) then
begin
i := i + 1;
Hstr := Hstr + PMak(ord(Zeile[i])+1);
end else
begin
az := ord(Zeile[i]);
i := i + 1;
while az > 0 do
begin
Hstr := Hstr + Zeile[i];
az := az - 1;
end;
end;
end else Hstr := Hstr + Zeile[i];
i := i + 1;
end;
UnPackIt := Hstr;
End;
Function DetectStopCode {(LastBt, Cd1, Cd2 : Byte) : Boolean};
begin
DetectStopCode := LastBt = (cd1 xor cd2 xor 55);
end;
Function CodeIt (Kanal : Byte; Zeile : String; Code : Byte) : String;
Var c1,c2 : Byte;
i : Integer;
flag : Boolean;
Hstr : String;
Begin
if (K[Kanal]^.StopCode > 0) and (Zeile > '') then
begin
c1 := Byte(K[Kanal]^.StopCode shr 8);
c2 := Byte(K[Kanal]^.StopCode and 255);
Hstr := Chr(c1) + Chr(c2);
Hstr := Hstr + Chr(c1 xor c2 xor 55);
flag := true; {======================
w<>r sch<63>n, wenns richtig w<>re, ist es
aber nicht :-) Das ist die angebliche
Berechnung des Check-Bytes}
for i := length(Zeile) downto 1 do
begin
if flag then begin Hstr := Chr(Ord(Zeile[i]) xor c1) + Hstr; flag := false; end
else begin Hstr := Chr(Ord(Zeile[i]) xor c2) + Hstr; flag := true; end;
end;
CodeIt := Hstr;
end else CodeIt := Zeile;
End;
Function DeCodeIt (Kanal : Byte; Zeile : String; Code : Byte) : String;
Var c1,c2 : Byte;
i : Integer;
flag : Boolean;
Hstr : String;
InOrdung:boolean;
Begin
i := length(Zeile);
if i > 3 then
begin
c1 := Byte(Zeile[i-2]);
c2 := Byte(Zeile[i-1]);
InOrdung:=false;
if ((((Word(c1) shl 8) + Word(c2)) = K[Kanal]^.StopCode) ) and
(DetectStopCode (Byte(Zeile[i]), c1,c2) ) {and
!weg lassen! (not k[kanal]^.mo.MonActive) } then InOrdung:=true;
{nachfolgender Teil f<>r den Spion-Autodetect!}
{$IFDEF code}
if (DetectStopCode (Byte(Zeile[i]), c1,c2) ) and
(k[kanal]^.mo.MonActive) then InOrdung:=true;
{$ENDIF}
if InOrdung then
begin
G^.DetCode := ((Word(c1) shl 8) + Word(c2));
Hstr := '';
flag := (length(Zeile) mod 2) = 0;
for i := 1 to length(Zeile) - 3 do
begin
if flag then begin Hstr := Hstr + Chr(Ord(Zeile[i]) xor c1); flag := false; end
else begin Hstr := Hstr + Chr(Ord(Zeile[i]) xor c2); flag := true; end;
end;
Zeile := Hstr;
end else G^.DetCode := 0;
end else G^.DetCode := 0;
DeCodeIt := Zeile;
End;
Function CodeStr (Kanal : Byte; Zeile : String) : String;
Var i : Integer;
Begin
for i := 1 to length(Zeile) do
begin
Zeile[i] := Chr(CodeTab[Ord(Zeile[i])]);
end;
CodeStr := Zeile;
End;
Function DeCode (Kanal : Byte; Zeile : String) : String;
Var i : Integer;
Begin
for i := 1 to length(Zeile) do
begin
Zeile[i] := Chr(DeCodeTab[Ord(Zeile[i])]);
end;
DeCode := Zeile;
End;
Function GetCode (Call : Str9) : Word;
Begin
{ReadUser(Call);
GetCode := U^.Komp;}
GetCode:=200; {Hier sollte eigentlich der Code <20>bergeben werden,
der dem User zugeordnet ist. Bei Tests mit anderen
Codes umstellen!!!}
End;
Function F2C(Call : Str9) : Str9; Begin F2C := Call; End;