, 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);,,,.,
enkelt - motorer
Next Page:rom bios dato