home *** CD-ROM | disk | FTP | other *** search
/ Chip 2000 February / Chip_2000-02_cd.bin / internet / BIBLECD / KONVERT.ZIP / KONVERT.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1998-10-25  |  3.5 KB  |  107 lines

  1. {
  2. Konvertor pismen s hacky a carkami. Pouziti, v prikazove radce zadejte
  3. za jmenem souboru jeste 4 dalsi parametry, 2 jmena souboru a 2 cisla
  4. kodu.
  5.  
  6. konvert.exe jmeno1 jmeno2 kod1 kod2
  7. Provede konverzi textoveho souboru: jmeno1 -> jmeno2
  8. Soubor jmeno2 bude prepsan, pokud existuje, resp. vytvoren, pokud neexistuje.
  9.  
  10. Vyznam cisel kodu (kod1 i kod2) jsou nasledujici:
  11. 1 ... kod Bri Kamenickych (pouziva se v DOSu, T602)
  12. 2 ... kod 852 (DOSove okno ve Windows)
  13. 3 ... kod 1250 (Windows)
  14. 4 ... kod 8859-2 (obvykle v Unixu)
  15. 5 ... bez hacku a carek
  16.  
  17. jmeno1 je jmeno vstupniho souboru, muze byt i s cestou
  18. jmeno2 je jmeno vystupniho souboru, muze byt i s cestou
  19. kod1 je cislo kodu vstupniho souboru
  20. kod2 je cislo kodu vystupniho souboru
  21.  
  22. Dotazy, pripominky, namety, nedostatky programu a chyby a cokoliv dalsiho
  23. piste na muj email: sokolovs@troja.fjfi.cvut.cz
  24. }
  25. program    Konvert(input,output);
  26. const    KodKam :String='áçâêéíîñó⌐¿ƒûúÿæÅÇàëÉï£Ñò₧¢åªù¥Æ';
  27. const    Kod852 :String='áƒ╘╪éíûσó²τ£àú∞º╡¼╥╖É╓ò╒αⁿµ¢▐Θφª';
  28. const    Kod1250:String='ßΦ∩∞Θφσ≥≤°Ü¥∙·²₧┴╚╧╠╔═╝╥╙╪èì┘┌▌Ä';
  29. const    Kod8859:String='ßΦ∩∞Θφ╡≥≤°╣╗∙·²╛┴╚╧╠╔═Ñ╥╙╪⌐½┘┌▌¼';
  30. const    KodBez :String='acdeeilnorstuuyzACDEEILNORSTUUYZ';
  31.  
  32. function Val(s:String):Byte;
  33. var    p:Byte;
  34.     i:Integer;
  35. begin
  36.  System.Val(s,p,i);
  37.  Val:=p;
  38. end;
  39.  
  40. function Prevod(zdroj:String;vstupni,vystupni:Byte):String;
  41. var    pom,pom0,pom1:String;
  42.     i,p:Integer;
  43. begin
  44.   case (vstupni) of
  45.    1: pom0:=KodKam;
  46.    2: pom0:=Kod852;
  47.    3: pom0:=Kod1250;
  48.    4: pom0:=Kod8859;
  49.    5: pom0:=KodBez;
  50.   end;
  51.   case (vystupni) of
  52.    1: pom1:=KodKam;
  53.    2: pom1:=Kod852;
  54.    3: pom1:=Kod1250;
  55.    4: pom1:=Kod8859;
  56.    5: pom1:=KodBez;
  57.   end;
  58.   for i:=1 to Length(zdroj) do
  59.   begin
  60.     p:=Pos(zdroj[i],pom0);
  61.     if p>0 then zdroj[i]:=pom1[p];
  62.   end;
  63.   Prevod:=zdroj;
  64. end;
  65.  
  66. var    f,g:Text;
  67.     s:String;
  68. begin
  69.  if ParamCount<>4 then
  70.  begin
  71.    Writeln('Konvertor pismen s hacky a carkami. Pouziti:');
  72.    Writeln(ParamStr(0),' jmeno1 jmeno2 kod1 kod2');
  73.    Writeln('Provede konverzi textoveho souboru jmeno1 -> jmeno2');
  74.    Writeln('Soubor jmeno2 bude prepsan, pokud existuje resp. vytvoren, pokud neexistuje.');
  75.    Writeln('Vyznam cisel kodu (kod1 i kod2) jsou nasledujici:');
  76.    Writeln('1 ... kod Bri Kamenickych (pouziva se v DOSu, T602)');
  77.    Writeln('2 ... kod 852 (DOSove okno ve Windows)');
  78.    Writeln('3 ... kod 1250 (Windows)');
  79.    Writeln('4 ... kod 8859-2 (obvykle v Unixu)');
  80.    Writeln('5 ... bez hacku a carek');
  81.    Writeln;
  82.  end else begin
  83.    if ParamStr(3)=ParamStr(4) then
  84.    begin
  85.      Writeln('Kody jsou stejne, soubor jste mohli normalne prekopirovat.');
  86.    end;
  87.    if ParamStr(1)<>ParamStr(2) then
  88.    begin
  89.      Assign(f,ParamStr(1));{$I-}Reset(f);{$I+}
  90.      if IOResult<>0 then begin Writeln('Vstupní soubor ',ParamStr(1),' neexistuje.');Exit;end;
  91.      Assign(g,ParamStr(2));{$I-}Rewrite(g);{$I+}
  92.      if IOResult<>0 then begin Writeln('Vÿstupní soubor ',ParamStr(2),' nejde vytvo⌐it.');Close(f);Exit;end;
  93.      while Not(Eof(f)) do
  94.      begin
  95.        {$I-}Readln(f,s);{$I+}
  96.        if IOResult<>0 then begin Writeln('Chyba p⌐i çtení souboru ',ParamStr(1),'.');Close(f);Close(g);Exit;end;
  97.        s:=Prevod(s,Val(ParamStr(3)),Val(ParamStr(4)));
  98.        {$I-}Writeln(g,s);{$I+}
  99.        if IOResult<>0 then begin Writeln('Chyba p⌐i zápisu do souboru ',ParamStr(2),'.');Close(f);Close(g);Exit;end;
  100.      end;
  101.      Close(g);Close(f);Writeln('O.K.');
  102.    end else begin
  103.      Writeln('Vstupní soubor je totoænÿ s vÿstupním souborem. Zvolte jiné jmené souboru pop⌐. jinou cestu.');
  104.    end;
  105.  end;
  106. end.
  107.