home *** CD-ROM | disk | FTP | other *** search
- {
- Konvertor pismen s hacky a carkami. Pouziti, v prikazove radce zadejte
- za jmenem souboru jeste 4 dalsi parametry, 2 jmena souboru a 2 cisla
- kodu.
-
- konvert.exe jmeno1 jmeno2 kod1 kod2
- Provede konverzi textoveho souboru: jmeno1 -> jmeno2
- Soubor jmeno2 bude prepsan, pokud existuje, resp. vytvoren, pokud neexistuje.
-
- Vyznam cisel kodu (kod1 i kod2) jsou nasledujici:
- 1 ... kod Bri Kamenickych (pouziva se v DOSu, T602)
- 2 ... kod 852 (DOSove okno ve Windows)
- 3 ... kod 1250 (Windows)
- 4 ... kod 8859-2 (obvykle v Unixu)
- 5 ... bez hacku a carek
-
- jmeno1 je jmeno vstupniho souboru, muze byt i s cestou
- jmeno2 je jmeno vystupniho souboru, muze byt i s cestou
- kod1 je cislo kodu vstupniho souboru
- kod2 je cislo kodu vystupniho souboru
-
- Dotazy, pripominky, namety, nedostatky programu a chyby a cokoliv dalsiho
- piste na muj email: sokolovs@troja.fjfi.cvut.cz
- }
- program Konvert(input,output);
- const KodKam :String='áçâêéíîñó⌐¿ƒûúÿæÅÇàëÉï£Ñò₧¢åªù¥Æ';
- const Kod852 :String='áƒ╘╪éíûσó²τ£àú∞º╡¼╥╖É╓ò╒αⁿµ¢▐Θφª';
- const Kod1250:String='ßΦ∩∞Θφσ≥≤°Ü¥∙·²₧┴╚╧╠╔═╝╥╙╪èì┘┌▌Ä';
- const Kod8859:String='ßΦ∩∞Θφ╡≥≤°╣╗∙·²╛┴╚╧╠╔═Ñ╥╙╪⌐½┘┌▌¼';
- const KodBez :String='acdeeilnorstuuyzACDEEILNORSTUUYZ';
-
- function Val(s:String):Byte;
- var p:Byte;
- i:Integer;
- begin
- System.Val(s,p,i);
- Val:=p;
- end;
-
- function Prevod(zdroj:String;vstupni,vystupni:Byte):String;
- var pom,pom0,pom1:String;
- i,p:Integer;
- begin
- case (vstupni) of
- 1: pom0:=KodKam;
- 2: pom0:=Kod852;
- 3: pom0:=Kod1250;
- 4: pom0:=Kod8859;
- 5: pom0:=KodBez;
- end;
- case (vystupni) of
- 1: pom1:=KodKam;
- 2: pom1:=Kod852;
- 3: pom1:=Kod1250;
- 4: pom1:=Kod8859;
- 5: pom1:=KodBez;
- end;
- for i:=1 to Length(zdroj) do
- begin
- p:=Pos(zdroj[i],pom0);
- if p>0 then zdroj[i]:=pom1[p];
- end;
- Prevod:=zdroj;
- end;
-
- var f,g:Text;
- s:String;
- begin
- if ParamCount<>4 then
- begin
- Writeln('Konvertor pismen s hacky a carkami. Pouziti:');
- Writeln(ParamStr(0),' jmeno1 jmeno2 kod1 kod2');
- Writeln('Provede konverzi textoveho souboru jmeno1 -> jmeno2');
- Writeln('Soubor jmeno2 bude prepsan, pokud existuje resp. vytvoren, pokud neexistuje.');
- Writeln('Vyznam cisel kodu (kod1 i kod2) jsou nasledujici:');
- Writeln('1 ... kod Bri Kamenickych (pouziva se v DOSu, T602)');
- Writeln('2 ... kod 852 (DOSove okno ve Windows)');
- Writeln('3 ... kod 1250 (Windows)');
- Writeln('4 ... kod 8859-2 (obvykle v Unixu)');
- Writeln('5 ... bez hacku a carek');
- Writeln;
- end else begin
- if ParamStr(3)=ParamStr(4) then
- begin
- Writeln('Kody jsou stejne, soubor jste mohli normalne prekopirovat.');
- end;
- if ParamStr(1)<>ParamStr(2) then
- begin
- Assign(f,ParamStr(1));{$I-}Reset(f);{$I+}
- if IOResult<>0 then begin Writeln('Vstupní soubor ',ParamStr(1),' neexistuje.');Exit;end;
- Assign(g,ParamStr(2));{$I-}Rewrite(g);{$I+}
- if IOResult<>0 then begin Writeln('Vÿstupní soubor ',ParamStr(2),' nejde vytvo⌐it.');Close(f);Exit;end;
- while Not(Eof(f)) do
- begin
- {$I-}Readln(f,s);{$I+}
- if IOResult<>0 then begin Writeln('Chyba p⌐i çtení souboru ',ParamStr(1),'.');Close(f);Close(g);Exit;end;
- s:=Prevod(s,Val(ParamStr(3)),Val(ParamStr(4)));
- {$I-}Writeln(g,s);{$I+}
- if IOResult<>0 then begin Writeln('Chyba p⌐i zápisu do souboru ',ParamStr(2),'.');Close(f);Close(g);Exit;end;
- end;
- Close(g);Close(f);Writeln('O.K.');
- end else begin
- Writeln('Vstupní soubor je totoænÿ s vÿstupním souborem. Zvolte jiné jmené souboru pop⌐. jinou cestu.');
- end;
- end;
- end.
-