home *** CD-ROM | disk | FTP | other *** search
/ Chip 2002 September / Chip_2002-09_cd1.bin / zkuste / delphi / kompon / d123456 / STR_BIT.ZIP / 16 / HUFFMAN / HUFFMAN.PAS < prev    next >
Pascal/Delphi Source File  |  2000-03-29  |  18KB  |  433 lines

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