enkelt - motorer

, en simpel rutinemæssig at komprimere tråde, bidragyder: swag støttegruppe, {vil du ' t får sådanne motorer fra min rutine, men her er de alligevel.når afprøvning, du og' henter bedste motorer, hvis man anvender engelsk og longish tråde.}, enhed, komprimering, grænseflade, konstant,    compressedstringarraysize = 500; (i retning af generøsitet}, type,    tcompressedstringarray = mængde [1]. compressedstringarraysize, funktion getcompressedstring (byte. arr: tcompressedstringarray): string;, procedure compressstring (st: string, var arr: tcompressedstringarray;,                           var len: heltal),    {omdanner st i en tcompressedstringarray af længde len}, gennemførelse, konstant,    freqchar: system [4 - 14] char = ' etaonirshdl ',    {kan ' t i [0 - 3], fordi to tomme bit være et rum}, funktion getcompressedstring(Arr : tCompressedStringArray) : String;, Var,   Shift : Byte;,   i : Integer;,   ch : Char;,   st : String;,   b : Byte;,   Function GetHalfNibble : Byte;,   begin,     GetHalfNibble := (Arr[i] shr Shift) and 3;,     if Shift = 0 then begin,       Shift := 6;,       inc(i);,     end else dec(Shift,2);,   end;, begin,   st := '';,   i := 1;,   Shift := 6;,   Repeat,     b := GetHalfNibble;,     if b = 0 then,       ch := ' ',     else begin,       b := (b shl 2) or GetHalfNibble;,       if b = $F then begin , ,         b := GetHalfNibble shl 6;,         b := b or GetHalfNibble shl 4;,          b: = b eller gethalfnibble sømhaj shb 2,          b: = b eller gethalfnibble;,          ch: = char, litra b),        ende,          ch: = freqchar [b],     ;,      hvis ch < >� så st: = st. + ch,    indtil ch =�,    getcompressedstring: = st;,;, procedure compressstring (st: string, var arr: tcompressedstringarray;,                           var len: heltal), (omdanner st i en tcompressedstringarray af længde len), var,    jeg: heltal,    skift: byte;,    procedure outhalfnibble b: byte),    begynder,      arr [-]: = arr - len] eller b sømhaj shb skift),      hvis skift = 0 så begynde,        skift: = 6,        inc (len),      ende andet dec (skift, 2).   end;,   Procedure OutChar(ch : Char);,   Var,     i : Byte;,     bych : Byte Absolute ch;,   begin,     if ch = ' ' then,       OutHalfNibble(0),     else begin,       i := 4;,       While (i<15) and (FreqChar[i]<>ch) do inc(i);,       OutHalfNibble(i shr 2);,       OutHalfNibble(i and 3);,       if i = $F then begin,         OutHalfNibble(bych shr 6);,         OutHalfNibble((bych shr 4) and 3);,         OutHalfNibble((bych shr 2) and 3);,         OutHalfNibble(bych and 3);,       end;,     end;,   end;, begin,   len := 1;,   Shift := 6;,   fillChar(Arr,sizeof(Arr),0);,   For i := 1 to length(st) do OutChar(st [i]),    outchar (# 0); (afslutning af komprimeret snor signaleret af�},    hvis skift = 6,      så dec (len);,,,.,



Previous:
Next Page: