Ez  a  mappa  tartalmazza  a  nzke  s  a szerkeszt, "File-keress"
parancs karaktertblit.

A tblk tartalmairl szl lersokat olvasd el!

A  karakter-frekvencia  informci  szksges  ahhoz, hogy a nzkben
illetve   a   szerkesztben   automatikusan   felismerje   a   FAR   a
karaktertblt  (erre nincs szksg, ha csak egy kdtblt hasznlsz).
Ez  lerja  az  OEM  kdtblk  karaktereinek  gyakorisgt  az  adott
nyelvben.  0 jelenti a legkisebb, a 254 a legnagyobb gyakorisgot, mg
a  255-s  rtk  azt  jelenti,  hogy  az  adott  karaktert  nem  kell
figyelembe venni az analzisben.

Az    albbi    egyszer    C++    program   hasznlhat   egy   ilyen
gyakorisg-informci  ellltsra.  Csak  egy paramtere van - azon
elg nagy szvegfile neve, amelyik az adott nyelvet, illetve annak OEM
kdtbljt jl jellemzi.


#include <stdio.h>

void main(int Argc, char *Argv[])
{
  if (Argc!=2)
  {
    printf("\nSyntax: DISTR <file>");
    return;
  }
  FILE *SrcFile=fopen(Argv[1],"rb");
  if (SrcFile==NULL)
  {
    printf("\nCannot open %s",Argv[1]);
    return;
  }
  unsigned long Count[256],MaxCount=0;

  for (int I=0;I<sizeof(Count)/sizeof(Count[0]);I++)
    Count[I]=0;

  int Ch,PrevCh=0;
  while ((Ch=fgetc(SrcFile))!=EOF)
    if (Ch!=PrevCh)
      Count[Ch]++;
  fclose(SrcFile);

  for (int I=128;I<sizeof(Count)/sizeof(Count[0]);I++)
    if (MaxCount<Count[I])
      MaxCount=Count[I];
  int Divider=MaxCount/254;
  if (Divider<10)
  {
    printf("\nSource file too small");
    return;
  }
  printf("REGEDIT4\n\n[HKEY_CURRENT_USER\\Software\\Far\\CodeTables]\n\"Distribution\"=hex:\\\n    ");
  for (int I=0;I<256;I++)
  {
    int Value;
    if (I<128 && (I>=32 || Count[I]!=0))
      Value=0xff;
    else
      if ((Value=Count[I]/Divider)>254)
        Value=254;
    printf("%02x%s",Value,I!=255 ? ",":"");
    if (I%16==15 && I!=255)
      printf("\\\n    ");
  }
  printf("\n");
}
