home *** CD-ROM | disk | FTP | other *** search
/ Chip 2002 September / Chip_2002-09_cd1.bin / zkuste / delphi / kompon / d123456 / STR_BIT.ZIP / 16 / HUFFMAN / XAFFMAN.PAS < prev   
Pascal/Delphi Source File  |  1999-11-14  |  19KB  |  435 lines

  1. program TVDemo; {ä½∩ óÑαß¿¿ 6.0}
  2. {$F+}
  3. uses
  4.   Dos, Crt, HelpFile, Menus, dek_fax, xaf_hlp,
  5.   Objects,dialogs, Drivers, Views, StdDlg, MsgBox, App;
  6. const
  7.   WildCard : PathStr = '*.*';
  8.   Imq_prog : PathStr = 'Äípáí«Γ¬á ßΓ«p¬ Σá¬ß¿¼¿½Ñ 3 úpπ»»δ';
  9.   S_vs : string = 'Γp«¬á ó¿ñÑ«¿º«ípáªÑ¡¿∩';
  10.   S_ks : string = '«ñ¿p«óá¡¡á∩ ßΓp«¬á';
  11.   Pre_Vi_X : string= 'ÅpÑ«ípẫóá¡¿Ñ ßΓp«¬¿ ó¿ñÑ«¿º«ípáªÑ¡¿∩ ó ¬«ñ òáΣΣ¼Ñ¡á';
  12.   Pre_X_Vi : string= 'ÅpÑ«ípẫóá¡¿Ñ ¬«ña òáΣΣ¼Ñ¡á ó ßΓp«¬π ó¿ñÑ«¿º«ípáªÑ¡¿∩';
  13.   Pre_Vi_R : string= 'ÅpÑ«ípẫóá¡¿Ñ ßΓp«¬¿ ó¿ñÑ«¿º«ípáªÑ¡¿∩ ó ¬«ñ READ';
  14.   Pre_R_Vi : string= 'ÅpÑ«ípẫóá¡¿Ñ ¬«ña READ ßΓp«¬¿ ó¿ñÑ«¿º«ípáªÑ¡¿∩';
  15. type
  16.   TTVMy = object(TApplication)
  17.     procedure Run; Virtual;
  18.     procedure InitStatusLine; Virtual;
  19.     procedure GetEvent(var Event: TEvent); Virtual;
  20.     function  GetPalette: PPalette; Virtual;
  21.     end;
  22.   PinpZn = ^TinpZn;
  23.   TinpZn = object(TInputLine)
  24.     procedure HandleEvent(var Event:TEvent); Virtual;
  25.   end;
  26.  
  27. var
  28.   R : TRect;
  29.   D: PFileDialog;  InWin : PDialog;
  30.   IM_is,              { ê¼∩ ¿ßσ«ñ¡«ú« «ípáíáΓδóáѼ«ú« Σá⌐½á }
  31.   IM_r : PathStr;     { ê¼∩ Σá⌐½á pѺπ½∞ΓáΓá                }
  32.   is_d ,              { CΓp«¬á ß ¿ßσ«ñ¡δ¼ ¿º«ípáªÑ¡¿Ñ¼      }
  33.   kod_d,              { æΓp«¬á ß ¬«ñ¿p«óá¡¡δ¼¿ ñá¡¡δ¼¿      }
  34.   is_d2,              { éΓ«pá∩ CΓp«¬á ß ¿ßσ«ñ¡δ¼ ¿º«ípáªÑ¡¿Ñ¼}
  35.   kod_d2: str_kod;    { éΓ«pá∩ æΓp«¬á ß ¬«ñ¿p«óá¡¡δ¼¿ ñá¡¡δ¼¿}
  36.   ind_pr,kont : word;
  37.   T : TTVMy;
  38.   ff_is,ff_rez : text;
  39.  
  40. { çá¼Ñ¡á ßΓá¡ñápΓ¡«ú« pÑñ-pá ßΓp«¬ ¡á óδípá¡¡δ⌐ }
  41. procedure TInpZn.HandleEvent(var Event:TEvent);
  42. { é »«½Ñ ¼«ª¡« óó«ñ¿Γ∞ Γ«½∞¬« ß¿¼ó«½δ'0''1''.''('')'      }
  43. { Åp¿ »ÑpѼÑΘÑ¡¿¿ ¬πpß«pá ó »«½Ñ Ñú« »«º¿µ¿∩ ¿¡ñ¿µ¿pπÑΓß∩ }
  44. { ¡áñ »páóδ¼ óÑpσ¡¿¼ πú½«¼ ßΓp«¬¿ í¿Γ:                    }
  45. {║9    CΓp«¬á ó¿ñÑ«¿º«ípáªÑ¡¿∩                            }
  46. {║  0000100000000001111111111111                       ▐ }
  47. begin
  48.  if (Event.What = evKeyDown) and  { ¡áªáΓá ¬½áó¿Φá }
  49.    ((Event.CharCode in ['0'..'9']) or ((Event.KeyCode AND $00FF)= 0)
  50.    or (Event.CharCode = '.') or (Event.CharCode = '(' ) or
  51.    (Event.CharCode = ')' ) or (Event.KeyCode = kbBack))
  52.      then TInputLine.HandleEvent(Event);
  53.   { éδó«ñ ΓѬπΘÑ⌐ »«º¿µ¿¿ ¬πpß«pá ¡áñ ½Ñóδ¼ πú½«¼ »«½∩ TInpZn }
  54.    Str(CurPos+1,im_r);
  55.    GotoXY(Origin.X,Origin.Y+3);
  56.    Write('   ');  { Oτ¿ßΓ¬á »«½∩ ñ½∩ óδó«ñá µ¿Σp }
  57.    GotoXY(Origin.X,Origin.Y+3);
  58.    Write(im_r);   { éδó«ñ ΓѬπΘÑ⌐ »«º¿µ¿¿ ¬πpß«pá}
  59.    DrawView;      { Å«ßΓáó¿Γ∞ ¬πpß«p ¡á ßΓáp«Ñ ¼ÑßΓ« ó ¿º«ípáªÑ¡¿¿ }
  60. end;
  61.  
  62. procedure TTVMy.InitStatusLine;
  63. { ê¡Σ«p¼áµ¿∩ « Σπ¡¬µ¿«¡á½∞¡δ󠬽áó¿Φáσ ¿ ¿σ á¬Γ¿ó¿ºáµ¿∩}
  64. {░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░           }
  65. { F1 Å«¼«Θ∞  F5 Zoom                                   }
  66. var
  67.   R: TRect;
  68. begin
  69.   GetExtent(R);
  70.   R.A.Y := R.B.Y - 1;
  71.   StatusLine := New(PStatusLine, Init(R,
  72.     NewStatusDef(0, $FFFF,
  73.       NewStatusKey('~F1~ Å«¼«Θ∞', kbF1, cmHelp,
  74.       NewStatusKey('~F5~ Zoom', kbF5, cmZoom, nil)), nil)));
  75. end;
  76.  
  77. function TTVMy.GetPalette: PPalette;
  78.  { éδí«p µóÑΓ«ó«⌐ »á½¿Γpδ ó ºáó¿ß¿¼«ßΓ¿ «Γ Γ¿»á ¼«¡¿Γ«pá }
  79. const
  80.   CNewColor = CColor + CHelpColor;
  81.   CNewBlackWhite = CBlackWhite + CHelpBlackWhite;
  82.   CNewMonochrome = CMonochrome + CHelpMonochrome;
  83.   P: array[apColor..apMonochrome] of string[Length(CNewColor)] =
  84.     (CNewColor, CNewBlackWhite, CNewMonochrome);
  85. begin
  86.   GetPalette := @P[AppPalette];
  87. end;
  88.  
  89. procedure TTVMy.GetEvent(var Event: TEvent);
  90. {  ÄíÑß»ÑτÑ¡¿Ñ  »p«úpá¼¼δ  ¬«¡ΓѬßΓ¡«⌐  »«ñ߬Ậ«⌐  ß  ó¡πΓpÑ¡¡Ñ⌐
  91.     ¿Ñpápσ¿Ñ⌐, pẼÑpδ «¬¡á ß ΓѬßΓ«¼ »«¼«Θ¿ ¼«ª¡« ¿º¼Ñ¡∩Γ∞
  92.   ╔═[■]═════════════════ Help ═════════════════[]═╗
  93.   ║ Åp«úpἼᠡỿßá¡á ñ½∩ ñѼ«¡ßΓpᵿ¿ »p«µÑßß«ó  
  94.   ║ ¬«ñ¿p«óá¡¿∩/ ñѬ«ñ¿p«óá¡¿∩ Σá¬ß¿¼¿½∞¡δσ        ▓
  95.   ║ ß««íΘÑ¡¿⌐ ß ¿ß»«½∞º«ó᡿Ѽ ¬«ñ«ó:              ▓
  96.   ║   òáΣΣ¼á¡á ¿ READá.                            ▓
  97.   ║      Éáºpáí«Γτ¿¬ æѼѡ«ó é.ï.                  ▓
  98.   ║        ùééêôÉ¥ 12 ¬áΣÑñpá                      ▓
  99.   ╚═■▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒─┘       }
  100.  
  101. var
  102.   W: PWindow;
  103.   HelpFile: PHelpFile;
  104.   HelpStrm: PDosStream;
  105.   Im : string[110];
  106.   Dlina : byte absolute Im;
  107. const
  108.   HelpInUse: Boolean = False;
  109. begin
  110.   TApplication.GetEvent(Event);
  111.   if (Event.What = evCommand) and (Event.Command = cmHelp) and
  112.     not HelpInUse then
  113.   begin
  114.    { Å«¿ß¬ Σá⌐½á »«¼«Θ¿ ó ¬áΓὫúÑ,úñÑ ¡áσ«ñ¿Γß∩ «ß¡«ó¡á∩ »p«úpá¼¼á }
  115.    { öá⌐½ »«¼«Θ¿ ñ«½ªÑ¡ ¿¼ÑΓ∞ ¿¼∩ »p«úpá¼¼δ EXE ¿ páßΦ¿pÑ¡¿Ñ HLP    }
  116.     im := EnvString('');   Dec(Dlina,4);    im := im + '.hlp';
  117.     HelpStrm := New(PDosStream, Init(im, stOpenRead));
  118.     HelpFile := New(PHelpFile, Init(HelpStrm));
  119.     if HelpStrm^.Status <> stOk then  begin
  120.       kont:= MessageBox('ìѽ∞º∩ «Γ¬pδΓ∞ Σá⌐½ »«¼«Θ¿', nil,mfOKButton);
  121.       Dispose(HelpFile, Done);        end
  122.                                 else    begin
  123.    { éδó«ñ »«¼«Θ¿ «»ÑpáΓ«pπ ó ñ¿á½«ú«ó«¼ pѪ¿¼Ñ }
  124.       HelpInUse := True;
  125.       W := New(PHelpWindow,Init(Helpfile, GetHelpCtx));
  126.       if ValidView(W) <> nil then begin
  127.           kont := DeskTop^.ExecView(W);
  128.           Dispose(W, Done);
  129.                                   end;
  130.    { çáóÑpΦ¿Γ∞ ñ¿á½«ú ß «»ÑpáΓ«p«¼  }
  131.       HelpInUse := False;      ClearEvent(Event);
  132.     end                                  end;
  133. end;
  134.  
  135. procedure Dekod;
  136. begin
  137.        Dekod_str(is_d,is_d2,Kod_d,Kod_d2,ind_pr);
  138.        Writeln;
  139.        case ind_pr of    { éδó«ñ »p«Γ«¬«½á páí«Γδ }
  140.          0 : begin   { è«ñ¿p«óá¡¿Ñ í¿Γ«ó«⌐ ßΓp«¬¿ ¬«ñ«¼ òáΣΣ¼á¡á }
  141.              Writeln(ff_rez, Pre_Vi_X);
  142.              Writeln(ff_rez, 'C'+ S_vs);
  143.              Writeln(ff_rez, is_d);
  144.              Writeln(ff_rez, 'K'+ S_ks);
  145.              Writeln(ff_rez, kod_d);
  146.              end;
  147.          1 : begin   { äѬ«ñ¿p«óá¡¿Ñ í¿Γ«ó«⌐ ßΓp«¬¿ ¬«ñ«¼ òáΣΣ¼á¡á }
  148.              Writeln(ff_rez, Pre_X_Vi);
  149.              Writeln(ff_rez, 'K'+ S_ks);
  150.              Writeln(ff_rez, kod_d);
  151.              Writeln(ff_rez, 'C'+ S_vs);
  152.              Writeln(ff_rez, is_d);
  153.              end;
  154.          2 : begin   { è«ñ¿p«óá¡¿Ñ í¿Γ«óδσ ßΓp«¬¿ ¬«ñ«¼ READ }
  155.              Writeln(ff_rez, Pre_Vi_R);
  156.              Writeln(ff_rez, 'C'+ S_vs);
  157.              Writeln(ff_rez, is_d);
  158.              Writeln(ff_rez, is_d2);
  159.              Writeln(ff_rez, 'K'+ S_ks);
  160.              Writeln(ff_rez, kod_d);
  161.              Writeln(ff_rez, kod_d2);
  162.              end;
  163.          3 : begin   { äѬ«ñ¿p«óá¡¿Ñ í¿Γ«óδσ ßΓp«¬¿ ¬«ñ«¼ READ }
  164.              Writeln(ff_rez, Pre_R_Vi);
  165.              Writeln(ff_rez, 'K'+ S_ks);
  166.              Writeln(ff_rez, kod_d);
  167.              Writeln(ff_rez, kod_d2);
  168.              Writeln(ff_rez, 'C'+ S_vs);
  169.              Writeln(ff_rez, is_d);
  170.              Writeln(ff_rez, is_d2);
  171.              end
  172.         end { Case }        end;
  173.  
  174.  procedure open_rez;
  175.  begin
  176.   { ÄΓ¬pδΓ∞ Σá⌐½ »p«Γ«¬«½á ñ½∩ ºá»¿ß¿ pѺπ½∞ΓáΓ«ó }
  177.   assign (ff_rez,im_r);
  178. {$I-}
  179.   Append(ff_rez);
  180. {$I+}
  181.   if IOResult <> 0 then Rewrite(ff_rez);
  182.  end;
  183.  
  184. procedure TTVMy.Run;
  185. {*************************************************}
  186. { Äß¡«ó¡«Ñ Γѽ« »«ñ»p«úpá¼¼δ ñ¿á½«úá ß «»ÑpáΓ«p«¼ }
  187. {*************************************************}
  188. type  Datatyp = record
  189.       is : string[lst]; { æΓp«¬á ó¿ñÑ«¿º«ípáªÑ¡¿∩ }
  190.       is_2: string[lst]; { 2 æΓp«¬á ó¿ñÑ«¿º«ípáªÑ¡¿∩ }
  191.       r  : string[lst];  { è«ñ¿p«óá¡¡á∩ ßΓ«p¬á     }
  192.       r_2: string[lst];  { 2 è«ñ¿p«óá¡¡á∩ ßΓ«p¬á     }
  193.       knop : word;      { çáó¿ß¿¼δÑ ¬¡«»¬¿        }
  194.      end;
  195. const    Data : Datatyp = ( { ìáτá½∞¡δÑ »ápá¼ÑΓpδ ñ¿á½«úá }
  196.       is : ''; { æΓp«¬á ó¿ñÑ«¿º«ípáªÑ¡¿∩ }
  197.       is_2 : ''; { éΓ«pá∩ æΓp«¬á ó¿ñÑ«¿º«ípáªÑ¡¿∩ }
  198.       r : '';  { è«ñ¿p«óá¡¡á∩ ßΓ«p¬á     }
  199.       r_2 :'';
  200.       knop : 0); { ÅÑpóá∩ ¬¡«»¬á          }
  201. var
  202.     Bm_is,Bm_r,Bm_is2,Bm_r2: PinpZn;  { æΓp«¬¿ óó«ñá í¿Γ«óδσ º¡áτÑ¡¿⌐ }
  203.     Rb : PRadioButtons;  { çáó¿ß¿¼δÑ ¬¡«»¬¿ }
  204. begin
  205. {       éδípáΓ∞ Σá⌐½ ó ñ¿á½«ú«ó«¼ pѪ¿¼Ñ.  é¿ñ ñ¿á½«ú«ó«ú« «¬¡á  }
  206. { ╔═[■]éóÑñ¿ΓÑ ¿¼∩ Σá⌐½á »p«Γ«¬«½á pѺπ½∞ΓáΓ«ó ═══╗
  207.   ║                                               ║
  208.   ║  ê¼∩ Σá⌐½á                                    ║
  209.   ║   *.*                        ▐▌    Open   ▄  ║
  210.   ║                                    ▀▀▀▀▀▀▀▀▀  ║
  211.   ║  Files                                        ║
  212.   ║   BIBL.PAS      │ NEWD.PAS         Cancel  ▄  ║
  213.   ║   DEK_FAX.BAK   │ PASTOOLS.PAS     ▀▀▀▀▀▀▀▀▀  ║
  214.   ║   DEK_FAX.PAS   │ PREOB.PAS                   ║
  215.   ║   HELPFILE.PAS  │ TU.TP                       ║
  216.   ║   HELP_P.TXT    │ TURBO.DSK                   ║
  217.   ║  ■▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒              ║
  218.   ║                                               ║
  219.   ║ C:\TP\WORK\*.*                                ║
  220.   ║ BIBL.PAS     39413     Aug  4, 1992  10:24am  ║
  221.   ╚═══════════════════════════════════════════════╝      }
  222.       D := New(PFileDialog, Init(WildCard,
  223.            'éóÑñ¿ΓÑ ¿¼∩ Σá⌐½á »p«Γ«¬«½á pѺπ½∞ΓáΓ«ó',
  224.            'ê¼∩ Σá⌐½á', fdOpenButton , 100));
  225.       if Desktop^.ExecView(D) <> cmCancel then
  226.                D^.GetFileName(IM_r);
  227.       Dispose(D, Done);
  228.  open_rez;     { ÄΓ¬pδΓ∞ Σá⌐½ »p«Γ«¬«½á ñ½∩ ºá»¿ß¿ pѺπ½∞ΓáΓ«ó }
  229.  repeat
  230.   R.Assign(0,2,80,21);   { ÉẼÑpδ «¬¡á ñ¿á½«úá }
  231.   InWin := New(Pdialog,init(R,'ÅpÑ«ípẫóá¡¿Ñ ß¿ú¡á½«ó'));
  232.                      { WWWWWWWWWWWWWWWW }
  233.   { é¿ñ Σ«p¼¿pπѼ«ú« ñ¿á½«ú«ó«ú« «¬¡á »p«úpá¼¼δ }
  234. {   Äípáí«Γ¬á ßΓ«p¬ Σá¬ß¿¼¿½Ñ 3 úpπ»»δ
  235. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  236. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  237. ╔═[■]══════════════════════ ÅpÑ«ípẫóá¡¿Ñ ß¿ú¡á½«ó ═══════════════════════════╗
  238. ║     CΓp«¬á ó¿ñÑ«¿º«ípáªÑ¡¿∩                                                  ║
  239. ║                                                                           ▐ ║
  240. ║                                                                           ▐ ║
  241. ║     BΓ«pá∩ ßΓp«¬á ó¿ñÑ«¿º«ípáªÑ¡¿∩                                           ║
  242. ║     K«ñ¿p«óá¡¡á∩ ßΓp«¬á                                                      ║
  243. ║                                                                           ▐ ║
  244. ║     ét«pá∩ ¬«ñ¿p«óá¡¡á∩ ßΓp«¬á                                               ║
  245. ║                                                                           ▐ ║
  246. ║                                                                              ║
  247. ║  MÑΓ«ñ »pÑ«ípẫóá¡¿∩                                                        ║
  248. ║  () ÅpÑ«ípẫóá¡¿Ñ ßΓp«¬¿ ó¿ñÑ«¿º«ípáªÑ¡¿∩ ó ¬«ñ òáΣΣ¼Ñ¡á                   ║
  249. ║  ( ) ÅpÑ«ípẫóá¡¿Ñ ¬«ña òáΣΣ¼Ñ¡á ó ßΓp«¬π ó¿ñÑ«¿º«ípáªÑ¡¿∩                  ║
  250. ║  ( ) ÅpÑ«ípẫóá¡¿Ñ ßΓp«¬¿ ó¿ñÑ«¿º«ípáªÑ¡¿∩ ó ¬«ñ READ                       ║
  251. ║  ( ) ÅpÑ«ípẫóá¡¿Ñ ¬«ña READ ßΓp«¬¿ ó¿ñÑ«¿º«ípáªÑ¡¿∩                        ║
  252. ║                                                                              ║
  253. ║      éδ»«½¡¿Γ∞ »pÑ«ípẫóá¡¿Ñ   ▄              çáóÑpΦ¿Γ∞ óδ»«½¡Ñ¡¿Ñ      ▄   ║
  254. ║     ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀         ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀   ║
  255. ╚══════════════════════════════════════════════════════════════════════════════╝
  256. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  257. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  258.  F1 Å«¼«Θ∞  F5 Zoom                          }
  259.   With InWin^ do begin  { ö«p¼¿p«óá¡¿Ñ «¬¡á ºá»p«ßá }
  260.    R.Assign(2,2,75,3);  { »«½Ñ ñ½∩ óó«ñ¿¼«ú« µ¿Σp«ó«ú« ¿º«ípáªÑ¡¿∩ }
  261.    Bm_is := New(PinpZn,Init(R,lst));
  262.    insert (Bm_is);     { Å«½Ñ ¿¼Ñ¡¿ }
  263.    R.Assign(5,1,47,2); { éßΓáó¿Γ∞ ¼ÑΓ¬π ßΓp«¬¿ }
  264.    insert (New(Plabel,Init(R,'~C~'+S_vs, Bm_is)));
  265.    R.Assign(76,2,78,3); { éßΓáó¿Γ∞ ß»¿ß«¬ óó«ñá }
  266.    insert (New(PHistory,Init(R, Bm_is,0)));
  267.   { éδó«ñ ñá¡¡δσ »«½Ñ⌐ ó ß½πτáÑ ñѬ-∩ »« ¬«ñπ READ }
  268.    R.Assign(2,3,75,4);  { »«½Ñ ñ½∩ óó«ñ¿¼«ú« µ¿Σp«ó«ú« ¿º«ípáªÑ¡¿∩ }
  269.    Bm_is2 := New(PinpZn,Init(R,lst));
  270.    insert (Bm_is2);     { Å«½Ñ ¿¼Ñ¡¿ }
  271.    R.Assign(5,4,47,5); { éßΓáó¿Γ∞ ¼ÑΓ¬π ßΓp«¬¿ }
  272.    insert (New(Plabel,Init(R,'~B~Γ«pá∩ ß'+S_vs, Bm_is2)));
  273.    R.Assign(76,3,78,4); { éßΓáó¿Γ∞ ß»¿ß«¬ óó«ñá }
  274.    insert (New(PHistory,Init(R, Bm_is2,0)));
  275.   { B¿ñ ß»¿ß¬á óó«ñá
  276. ╔═[■]═════════════════════════════════════════════════════════════════════╗
  277. ║ 0000100000000011111111111111                                            
  278. ║ 0000100000000001111111111111                                            ▒
  279. ║                                                                         ▒
  280. ║                                                                         
  281. ╚═▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓═╝ }
  282.   { ------------------------------------------- }
  283.    R.Assign(2,6,75,7);   Bm_r := New(PinpZn,Init(R,lst));
  284.    insert (Bm_r);     { Å«½Ñ ¿¼Ñ¡¿ }
  285.    R.Assign(5,5,47,6);
  286.    insert (New(Plabel,Init(R,'~K~'+S_ks, Bm_r)));
  287.    R.Assign(76,6,78,7); { éßΓáó¿Γ∞ ß»¿ß«¬ óó«ñá }
  288.    insert (New(PHistory,Init(R, Bm_r,1)));
  289.  { æ»¿ß«¬ óó«ñá »«ºó«½∩ÑΓ ºá»«¼¡¿Γ∞ ¿ pÑñá¬Γ¿p«óáΓ∞ »pÑñδñπΘ¿Ñ óóÑñÑ¡¡δÑ
  290.    º¡áτÑ¡¿∩ »ÑpѼѡ¡δσ, τΓ« º¡áτ¿Γѽ∞¡« φ¬«¡«¼¿Γ ópѼ∩ »p¿ óó«ñÑ »«σ«ª¿σ
  291.    ¿ßσ«ñ¡δσ ñá¡¡δσ. Äí«º¡áτáÑΓß∩ ¡á φ¬pá¡Ñ ßΓpѽ¬«⌐ ßí«¬π «Γ »«½∩ óó«ñá.
  292.    á¬Γ¿ó¿º¿pπÑΓß∩ ¡áªáΓ¿Ñ¼ ßΓpѽ¬¿ ó¡¿º.       }
  293.   { ------------------------------------------- }
  294.   { éδó«ñ ñá¡¡δσ »«½Ñ⌐ ó ß½πτáÑ ñѬ-∩ »« ¬«ñπ READ }
  295.    R.Assign(2,8,75,9);   Bm_r2 := New(PinpZn,Init(R,lst));
  296.    insert (Bm_r2);     { Å«½Ñ ¿¼Ñ¡¿ }
  297.    R.Assign(5,7,47,8);
  298.    insert (New(Plabel,Init(R,'é~t~«pá∩ ¬'+S_ks, Bm_r2)));
  299.    R.Assign(76,8,78,9); { éßΓáó¿Γ∞ ß»¿ß«¬ óó«ñá }
  300.    insert (New(PHistory,Init(R, Bm_r2,2)));
  301.   {===============================================================}
  302.                          { éßΓáó¿Γ∞ ¬¡«»¬¿ π»páó½Ñ¡¿∩ pѪ¿¼«¼ »pÑ«íp-∩
  303. ║  MÑΓ«ñ »pÑ«ípẫóá¡¿∩                                                        ║
  304. ║  () ÅpÑ«ípẫóá¡¿Ñ ßΓp«¬¿ ó¿ñÑ«¿º«ípáªÑ¡¿∩ ó ¬«ñ òáΣΣ¼Ñ¡á                   ║
  305. ║  ( ) ÅpÑ«ípẫóá¡¿Ñ ¬«ña òáΣΣ¼Ñ¡á ó ßΓp«¬π ó¿ñÑ«¿º«ípáªÑ¡¿∩                  ║
  306. ║  ( ) ÅpÑ«ípẫóá¡¿Ñ ßΓp«¬¿ ó¿ñÑ«¿º«ípáªÑ¡¿∩ ó ¬«ñ READ                       ║
  307. ║  ( ) ÅpÑ«ípẫóá¡¿Ñ ¬«ña READ ßΓp«¬¿ ó¿ñÑ«¿º«ípáªÑ¡¿∩                }
  308.    R.Assign(2,11,79,15);
  309.    Rb :=  New(PRadioButtons,Init(R,
  310.        NewSItem(Pre_Vi_X,
  311.        NewSItem(Pre_X_Vi,
  312.        NewSItem(Pre_Vi_R,
  313.        NewSItem(Pre_R_Vi,NIL))))));
  314.    insert (Rb);   { éßΓáó¿Γ∞ ºáó¿ß¿¼δÑ ¬¡«»¬¿ }
  315.    R.Assign(2,10,79,11);   { éßΓáó¿Γ∞ ¼ÑΓ¬π ¬¡«»«¬ }
  316.    insert (New(Plabel,Init(R,'~M~ÑΓ«ñ »pÑ«ípẫóá¡¿∩', Rb)));
  317.                          { éßΓáó¿Γ∞ ñóÑ ¬«¼á¡ñ¡δÑ ¬¡«»¬¿
  318. ║      éδ»«½¡¿Γ∞ »pÑ«ípẫóá¡¿Ñ   ▄              çáóÑpΦ¿Γ∞ óδ»«½¡Ñ¡¿Ñ      ▄
  319. ║     ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀         ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀  }
  320.    R.Assign(4,16,35,18);
  321.    insert (New(PButton,
  322.      Init(R,'éδ»«½¡¿Γ∞ »pÑ«ípẫóá¡¿Ñ',cmOk,bfDefault)));
  323.  {  »«ß½Ññ¡∩∩ óßΓáó½∩Ѽá∩ ¬¡«»¬á á¬Γ¿ó¿º¿pπÑΓß∩ }
  324.    R.Assign(42,16,76,18);
  325.    insert (New(PButton,
  326.      Init(R,'çáóÑpΦ¿Γ∞ óδ»«½¡Ñ¡¿Ñ',cmCancel,bfNormal)));
  327.    SetData(Data)     { ôßΓá¡«ó¿Γ∞ ¡áτá½∞¡δÑ º¡áτÑ¡¿∩ }
  328.   end;      { ¬«¡Ñµ Σ-∩ «¬¡á }
  329.                      { WWWWWWWWWWWWWWWW }
  330.    kont := DeskTop^.ExecView(InWin);  { Å«¼ÑßΓ¿Γ∞ «¬¡« ¡á φ¬pá¡ }
  331.    InWin^.GetData(Data);  { Å«½πτ¿Γ∞ ¡«óδÑ º¡áτÑ¡¿∩ }
  332.   with Data do begin  { Å«½πτÑ¡¿Ñ óóÑñÑ¡¡δσ ñá¡¡δσ }
  333.     is_d := is;       kod_d  := r;
  334.     is_d2 := is_2;    kod_d2  := r_2;    ind_pr := knop;
  335.                end;
  336.                        { éδ»«½¡¿Γ∞ ñѬ«ñ¿p«óá¡¿Ñ »«½πτÑ¡¡δσ ñá¡¡δσ }
  337.    if kont <> CmCancel then Dekod;
  338.                { ================================================= }
  339.   with Data do begin  { Å«½πτÑ¡¿Ñ »pÑ«ípáº. ñá¡¡δσ }
  340.      is:= is_d ;        r := kod_d;
  341.      is_2 := is_d2;     r_2 := kod_d2;
  342.                end;
  343.    Dispose(InWin, Done);
  344.  until kont = cmCancel;
  345.  Close(ff_rez);
  346. end;       {TTVMy.Run}
  347.  
  348.  
  349. procedure Obr_fail;
  350. var kol,kode : integer;
  351.     S_vn : str_kod;
  352.  begin
  353.   Assign(ff_is, Im_is);
  354.   Reset(ff_is);
  355.   open_rez;     { ÄΓ¬pδΓ∞ Σá⌐½ »p«Γ«¬«½á ñ½∩ ºá»¿ß¿ pѺπ½∞ΓáΓ«ó }
  356.    while not Eof(ff_is) do   begin
  357.      Readln(ff_is,S_vn);
  358.        case ind_pr of
  359.          0 : is_d := S_vn; { è«ñ¿p«óá¡¿Ñ í¿Γ«ó«⌐ ßΓp«¬¿ ¬«ñ«¼ òáΣΣ¼á¡á }
  360.          1 : kod_d := S_vn; { äѬ«ñ¿p«óá¡¿Ñ í¿Γ«ó«⌐ ßΓp«¬¿ ¬«ñ«¼ òáΣΣ¼á¡á }
  361.          2 : begin   { è«ñ¿p«óá¡¿Ñ í¿Γ«óδσ ßΓp«¬¿ ¬«ñ«¼ READ }
  362.              is_d := S_vn;
  363.              Readln(ff_is,S_vn);
  364.              is_d2 := S_vn;
  365.              end;
  366.          3 : begin   { äѬ«ñ¿p«óá¡¿Ñ í¿Γ«óδσ ßΓp«¬¿ ¬«ñ«¼ READ }
  367.              kod_d := S_vn;
  368.              Readln(ff_is,S_vn);
  369.              kod_d2 := S_vn;
  370.              end              end; { Case }
  371.      Dekod;
  372.                              end;
  373.   Close(ff_is);     Close(ff_rez);
  374.  end;     {Obr_fail}
  375.  
  376. { -------------------------------------------}
  377. { Äípáí«Γ¬á ¬«¼á¡ñ¡«⌐ ßΓp«¬¿ »p«úpá¼¼δ       }
  378. function Kom_str(f: integer): Boolean;
  379. var  i : integer;
  380.      S : PathStr;
  381.      rez : Boolean;
  382. begin
  383.   rez := False;
  384.   for I := 1 to ParamCount do
  385.   begin
  386.     S := ParamStr(I);
  387.     if S[1] = '/' then
  388.         case UpCase(S[2]) of
  389.       'n','N': Im_is := Copy(S,3,length(S)-2);
  390.       'k','K': Im_r :=  Copy(S,3,length(S)-2);
  391.       'd','D': begin
  392.                S := Copy(S,3,length(S)-2);
  393.                if (S='#X') or (S='#x') then ind_pr := 1;
  394.                if (S='X#') or (S='x#') then ind_pr := 2;
  395.                if (S='#R') or (S='rx') then ind_pr := 3;
  396.                if (S='R#') or (S='xr') then ind_pr := 4;
  397.                end
  398.          else  rez := True
  399.          end
  400.                    else  rez := True
  401.    end;
  402.   if (im_is='') or (im_r='') or (ind_pr=0) then rez := True;
  403.   dec(ind_pr);
  404.   if rez then kont:= MessageBox('HÑ»páó¿½∞¡« ºáñá¡á ¬«¼á¡ñ¡á∩ ßΓp«¬á '
  405.                                + #3 + 'ÅÑpÑσ«ñ ¬ ñ¿á½«ú«ó«¼π pѪ¿¼π',
  406.                                  NIL, mfOKButton);
  407.   Kom_str := rez;
  408. end;        {Kom_Str}
  409. {*********************************************************}
  410.  
  411. begin
  412.   im_r := ''; im_is := '';  ind_pr := 0;
  413.   TextColor(Yellow);  TextBackground(Blue);
  414.   T.init;  { ê¡¿µ¿á½¿ºáµ¿∩ TURBO VISION }
  415.            { éδó«ñ ß««íΘÑ¡¿∩ « ¡áº¡áτÑ¡¿¿ »p«úpá¼¼δ }
  416.   Window(1, 1, 80, 25);       { éδó«ñ ß««íΘÑ¡¿∩ ó óÑpσ¡εε ßΓp«τ¬π }
  417.   GotoXY(5, 1);   Write(Imq_prog);
  418.   R.Assign(5,0,75,8);   { éδó«ñ ß««íΘÑ¡¿∩ « ¡áº¡áτÑ¡¿¿ »p«úpá¼¼δ }
  419.   if MessageBoxRect(R, #3+Imq_prog,NIL,
  420.        mfOKButton +  mfCancelButton) = cmCancel then halt(256-5);
  421. {░░░░╔═[■]═════════════════════════ Warning ══════════════════════════════╗░░░░░
  422. ░░░░░║                                                                    ║░░░░░
  423. ░░░░░║                 Äípáí«Γ¬á ßΓ«p¬ Σá¬ß¿¼¿½Ñ 3 úpπ»»δ                 ║░░░░░
  424. ░░░░░║                                                                    ║░░░░░
  425. ░░░░░║                                                                    ║░░░░░
  426. ░░░░░║                           OK   ▄    Cancel ▄                       ║░░░░░
  427. ░░░░░║                         ▀▀▀▀▀▀▀▀    ▀▀▀▀▀▀▀▀                       ║░░░░░
  428. ░░░░░╚════════════════════════════════════════════════════════════════════╝░░░░░}
  429.  
  430. {*éó«ñ »ápá¼ÑΓp«ó ¿º ¬«¼á¡ñ¡«⌐ ßΓp«¬¿, Ñß½¿ »ápá¼ÑΓpδ ºáñá¡δ ¡Ñ»páó¿½∞¡«, Γ«  *}
  431.   if Kom_Str(1) then T.run    { »ÑpÑσ«ñ ó pѪ¿¼ ñ¿á½«úá }
  432.                 else Obr_fail;{ «ípáí«Γ¬á Σá⌐½á ß«ú½áß¡« π»p-󠬽ετÑ⌐, ¿¡áτÑ }
  433.   T.Done;
  434. end.
  435.