ANSI_OEM.PAS

{* Перекодировка Windows <-> DOS *}

Unit ANSI_OEM;
Interface
Implementation
Begin
 writeln('Функции перекодировки из Windows в DOS и обратно');
End.

Program pas;

Uses ANSI_OEM.pas; {* Эту строку можно удалить *}
unit ANSI_OEM;
interface  { ------------------------------------------------------------------ }
Function WinToDos(DString : String) : String;
Function DosToWin(DString : String) : String{ ------------------------------------------------------------------ }
implementation  { ------------------------------------------------------------------ }
Function WinToDos(DString : String) : String;
Const {* Предопределенные *}
  AltTable : Array[0..255] Of Char = (    #0,  #1,  #2,  #3,  #4,  #5,  #6,  #7,    #8,  #9,  #10, #11, #12, #13, #14, #15,    #16, #17, #18, #19, #20, #21, #22, #23,    #24, #25, #26, #27, #28, #29, #30, #31,    #32, #33, #34, #35, #36, #37, #38, #39,    #40, #41, #42, #43, #44, #45, #46, #47,    #48, #49, #50, #51, #52, #53, #54, #55,    #56, #57, #58, #59, #60, #61, #62, #63,    #64, #65, #66, #67, #68, #69, #70, #71,    #72, #73, #74, #75, #76, #77, #78, #79,    #80, #81, #82, #83, #84, #85, #86, #87,    #88, #89, #90, #91, #92, #93, #94, #95,    #96, 'a''b''c''d''e''f''g',    'h''i''j''k''l''m''n''o',    'p''q''r''s''t''u''v''w',    'x''y''z',#123,#124,#125,#126,#127,   #176,#177,#178,#179,#180,#181,#182,#183,   #184,#185,#186,#187,#188,#189,#190,#191,   #192,#193,#194,#195,#196,#197,#198,#199,   #200,#201,#202,#203,#204,#205,#206,#207,   #208,#209,#210,#211,#212,#213,#214,#215,   #216,#217,#218,#219,#220,#221,#222,#223,    'А''Б''В''Г''Д''Е''Ж''З',    'И''Й''К''Л''М''Н''О''П',    'Р''С''Т''У''Ф''Х''Ц''Ч',    'Ш''Щ''Ъ''Ы''Ь''Э''Ю''Я',    'а''б''в''г''д''е''ж''з',    'и''й''к''л''м''н''о''п',    'р''с''т''у''ф''х''ц''ч',    'ш''щ''ъ''ы''ь''э''ю''я',    'Ё''Ё',#242,#243,#244,#245,#246,#247,   #248,#249,#250,#251,#252,#253,#254,#255);
Var {* В работе нам потребуются переменные: *}
  I                         : Integer;
Begin
  WinToDos[0] := DString[0];
  For I := 1 To Length(DString) Do{* Цикл для I => [1 .. Length(DString)] *}
    { ------------------------------------------------------------------ }
  Function DosToWin(DString : String); {* Константы *}
  AltTable                  : Array[0..255] Of Char = (    #0,  #1,  #2,  #3,  #4,  #5,  #6,  #7,    #8,  #9,  #10, #11, #12, #13, #14, #15,    #16, #17, #18, #19, #20, #21, #22, #23,    #24, #25, #26, #27, #28, #29, #30, #31,    #32, #33, #34, #35, #36, #37, #38, #39,    #40, #41, #42, #43, #44, #45, #46, #47,    #48, #49, #50, #51, #52, #53, #54, #55,    #56, #57, #58, #59, #60, #61, #62, #63,    #64, #65, #66, #67, #68, #69, #70, #71,    #72, #73, #74, #75, #76, #77, #78, #79,    #80, #81, #82, #83, #84, #85, #86, #87,    #88, #89, #90, #91, #92, #93, #94, #95,    #96, 'a''b''c''d''e''f''g',    'h''i''j''k''l''m''n''o',    'p''q''r''s''t''u''v''w',    'x''y''z',#123,#124,#125,#126,#127,    'А''Б''В''Г''Д''Е''Ж''З',    'И''Й''К''Л''М''Н''О''П',    'Р''С''Т''У''Ф''Х''Ц''Ч',    'Ш''Щ''Ъ''Ы''Ь''Э''Ю''Я',    'а''б''в''г''д''е''ж''з',    'и''й''к''л''м''н''о''п',   #176,#177,#178,#179,#180,#181,#182,#183,   #184,#185,#186,#187,#188,#189,#190,#191,   #192,#193,#194,#195,#196,#197,#198,#199,   #200,#201,#202,#203,#204,#205,#206,#207,   #208,#209,#210,#211,#212,#213,#214,#215,   #216,#217,#218,#219,#220,#221,#222,#223,    'р''с''т''у''ф''х''ц''ч',    'ш''щ''ъ''ы''ь''э''ю''я',    'Ё''Ё',#242,#243,#244,#245,#246,#247,   #248,#249,#250,#251,#252,#253,#254,#255);
  Var {* В работе нам потребуются переменные: *}
    I : Integer;
    Begin
      DosToWin[0] := DString[0];
      For I := 1 To Length(DString) Do {* Цикл для I => [1 .. Length(DString)] *}
        DosToWin[I] := AltTable[Byte(DString[I])];
    End;
  
End.