, eenvoudige, een eenvoudige procedure voor de compressie - string, bijdrage: buit team, je zou' t van mijn routine, die druk hier, hoe dan ook, ze.Wanneer de test, je' als je de beste -, in het Engels en touw.,), eenheid - interface;,, totaal, compressedstringarraysize = 500; {liever gulle kant}, het type, de tcompressedstringarray =) [1]. Compressedstringarraysize bytes, getcompressedstring functie; (ARR:tcompressedstringarray): string, het programma; compressstring (st: touw; bevestigt dat tcompressedstringarray, arr; var - len: het hele nummer); , st in tcompressedstringarray (len), de Uitvoering van , totaal, freqchar: [4]). 14 encoke = 39; etaonirshdl en', {kan en' 't is [...] 0 - 3 omdat twee vacatures betekent dat de functie van de ruimte getcompressedstrin},g(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或gethalfnibble SHL 2;, B = B或gethalfnibble;, CH =字符(B);最后, 别的, CH = freqchar [B];, 端;, 如果CH <;>;# 0圣:= ST CH,CH = # ;直到0;, getcompressedstring:=圣;,,程序结束;compressstring(ST:字符串;申明arr tcompressedstringarray;, VAR Len:整数);,{将ST成tcompressedstringarray长度为len },VaR, 我:整数, 转变;:字节;, 程序outhalfnibble(B:字节);, 开始, ARR [兰]:[镜头] = ARR或(b SHL移位);如果, 移= 0然后开始, 转变:= 6;, 公司(LEN);, 端别的DEC(移,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 [M]); , outchar (# 0); - einde - string teken), als dienst = 6, dan dec (len); aan het einde van het,,.,
De string -
Previous:- tijd voor
Next Page:- bios