home *** CD-ROM | disk | FTP | other *** search
/ BBS 1 / BBS#1.iso / document / tvcpp.a07 / TV_DOC.DOC
Text File  |  1992-03-03  |  14KB  |  354 lines

  1.     ìáí«αδ ßΓ᫬  ß«ºñáεΓß∩ ¬«¡ßΓαπ¬Γ«α«¼ TResourceFile,  á »«ñ-
  2.       ñÑনóáεΓß∩ ¿ ∩ó½∩εΓß∩ ñ«ßΓπ»¡δ¼¿ »«ßαÑñßΓó«¼  Σπ¡¬µ¿⌐  φΓ«ú«  ªÑ
  3.       ¬½áßßá get ¿ put. Äñ¡á¬« Σá⌐½ »«Γ«¬á ñ«½ªÑ¡ íδΓ∞ «Γ¬αδΓ (ß«ºñá¡ ¿
  4.       ¿¡¿µ¿á½¿º¿α«óá¡) ñ« ß«ºñá¡¿∩ Σá⌐½á αÑßπαß«ó. öá¬Γ¿τÑ߬¿ φΓ« «º¡á-
  5.       τáÑΓ, τΓ«  ¡Ñ«íσ«ñ¿¼« óδºóáΓ∞ ¬«¡ßΓαπ¬Γ«α,  π ¬«Γ«α«ú« ó ¬áτÑßΓóÑ
  6.       áαúπ¼Ñ¡Γá íπñÑΓ πªÑ ßπΘÑßΓóπεΘ¿⌐ π¬áºáΓѽ∞ ¡á fpstream:
  7.  
  8.            TResourceFile::TResourceFile(fstream *aStream);
  9.  
  10.       Turbo Vision ñ½∩ æ++        = 214 =
  11.  
  12.            // ß«ºñá¡¿Ñ Σá⌐½á αÑßπαß«ó »α¿ »«¼«Θ¿ π¬áºáΓѽ∩ aStream,
  13.            // »ÑαÑñáóáѼ«ú« ó ¬áτÑßΓóÑ áαúπ¼Ñ¡Γá
  14.  
  15.  
  16.  
  17.       Turbo Vision ñ½∩ æ++        = 215 =
  18.  
  19.                                              æ«ºñá¡¿Ñ αÑßπαß«ó
  20.       -----------------------------------------------------------------
  21.  
  22.            Åα«µÑßß ß«ºñá¡¿∩ ¿ ¿ß»«½∞º«óá¡¿∩ αÑßπαß«ó  ó¬½ετáÑΓ  ó  ßÑí∩
  23.       τÑΓδαÑ Φáúá. æ¡áτá½á ¡Ñ«íσ«ñ¿¼« «Γ¬αδΓ∞ »«Γ«¬, ºáΓѼ »α«¿¡¿µ¿á½¿-
  24.       º¿α«óáΓ∞ Σá⌐½ αÑßπαß«ó ó »«Γ«¬Ñ, ºáΓѼ ß«σαá¡¿Γ∞ ¡πª¡«Ñ ¬«½¿τÑßΓ-
  25.       ó« «íΩÑ¬Γ«ó  ó¼ÑßΓÑ  ß  ¿σ ¬½ετἿ ¿,  ¡á¬«¡Ñµ,  ºá¬αδΓ∞ »«Γ«¬ »«
  26.       «¬«¡τá¡¿ε αáí«Γδ.
  27.  
  28.            Åα¿¼Ñτá¡¿Ñ: é  ñѼ«¡ßΓαᵿ«¡¡«¼ »α¿¼ÑαÑ GENFORM »«¬áºδóáεΓß∩
  29.                        αÑßπαßδ Turbo Vision  ó  ñÑ⌐ßΓó¿¿,  á  ΓᬪѠ ¿σ
  30.                        »αá¬Γ¿τÑ߬¿Ñ ó«º¼«ª¡«ßΓ¿.
  31.  
  32.            ì¿ªÑ »α¿ó«ñ¿Γß∩  «Γαδó«¬ ó ¬«Γ«α«¼ «»¿ßá¡« ß«ºñá¡¿Ñ »α«ßΓ«ú«
  33.       Σá⌐½á αÑßπαß«ó ß ¿¼Ñ¡Ñ¼ MY.REZ,  ¿ß»«½∞ºπѼ«ú« ñ½∩ ß«σαá¡Ñ¡¿∩ «ñ-
  34.       ¡«ú« αÑßπαßá   -  ßΓ᫬¿  ß«ßΓ«∩¡¿∩  ß  ¬½ετ«¼  "Waldo".  öπ¡¬µ¿∩
  35.       TResourceFile::put ¿¼ÑÑΓ ñóá áαúπ¼Ñ¡Γá:  π¬áºáΓѽ∞  TStreamable*,
  36.       π¬áºδóáεΘ¿⌐ ¡á φ½Ñ¼Ñ¡Γ, ¬«Γ«αδ⌐ íπñÑΓ ß«σαá¡Ñ¡ ¿ ¬½ετ const char*
  37.       key. ê¼Ñ⌐ΓÑ  ó ó¿ñπ,  τΓ« ñ¿αÑ¬Γ¿óá #define ñ«½ª¡á »αÑñΦÑßΓó«óáΓ∞
  38.       ñ¿αÑ¬Γ¿óÑ #include<tv.h> ñ½∩  «íÑß»ÑτÑ¡¿∩  »αáó¿½∞¡«ú«  ó¬½ετÑ¡¿∩
  39.       Σá⌐½«ó ºáú«½«ó¬«ó ¿ αÑú¿ßΓαᵿ¿ ¬½áßß«ó,  óºá¿¼«ñÑ⌐ßΓóπεΘ¿σ ß »«-
  40.       Γ«¬á¼¿.
  41.  
  42.       /* ó αÑá½∞¡δσ »α¿¬½áñ¡δσ »α«úαá¼¼á ñ¿αÑ¬Γ¿óá #define  ¿  #include
  43.       «íδτ¡« »«¼ÑΘáεΓß∩ ó αẽ¿τ¡δÑ Σá⌐½δ */
  44.  
  45.       #define Uses_TRect
  46.       #define Uses_TStatusLine
  47.       #define Uses_TStatusDef
  48.       #define Uses_TStatusItem
  49.  
  50.       /* »«ß½Ññ¡¿Ñ ñóÑ ñ¿αÑ¬Γ¿óδ #define, σ«Γ∩ ¿ ¿ºíδΓ«τ¡δ, ¡« íѺóαÑñ-
  51.       ¡δ -   ß¼«Γα¿ΓÑ  ¬«¼¼Ñ¡Γáα¿⌐  »«ß½Ñ  «»αÑñѽѡ¿∩  Uses_TResource-
  52.       Collection */
  53.  
  54.       #define Uses_TResourceFile
  55.       #define Uses_TResourceCollection
  56.  
  57.       /* «»αÑñѽѡ¿Ñ  #define Uses_TResourceCollection ñѽáΓ∞ ¡Ñ «í∩ºá-
  58.       Γѽ∞¡«, ¡« «Φ¿í¬¿ ¡Ñ »α«¿º«⌐ñÑΓ:  TV.H πªÑ º¡áÑΓ,  τΓ« RESOURCE.H
  59.       íπñÑΓ ó¬½ετÑ¡, Γᬠ¬á¬ ßñѽᡫ «»αÑñѽѡ¿Ñ Uses_TResourceFile
  60.       */
  61.  
  62.       #define Uses_fpstream
  63.       ...
  64.  
  65.       // ñ«»«½¡¿Γѽ∞¡δÑ «»αÑñѽѡ¿∩ ñ½∩ ¬áªñ«ú« ¿ß»«½∞ºπѼ«ú« ¬½áßßá
  66.       ...
  67.       // αÑú¿ßΓαᵿ∩ ¬½áßß«ó, ¿ß»«½∞ºπεΘ¿σ »«Γ«¬¿:
  68.       __link(RStatusLine);
  69.       __link(RResourceCollection);
  70.       /* ºá»«¼¡¿ΓÑ, τΓ« TResourceFile ¡Ñ ¿ß»«½∞ºπÑΓ »«Γ«¬¿!
  71.          Å«Γ«¬¿ ¿ß»«½∞ºπεΓ Γ«½∞¬« ¬«½½Ñ¬µ¿¿ αÑßπαß«ó */
  72.  
  73.       Turbo Vision ñ½∩ æ++        = 216 =
  74.  
  75.       ...
  76.       #include<tv.h>
  77.       // ¡Ñ«íσ«ñ¿¼δÑ ñ«»«½¡¿Γѽ∞¡δÑ ßΓá¡ñáαΓ¡δÑ Σá⌐½δ ºáú«½«ó¬«ó
  78.  
  79.       ...
  80.  
  81.       const char rezFileName[] = "MY.REZ";
  82.       cout << "櫺ñá¡¿Ñ " << rezFileName << end;
  83.       fpstream *ifps;
  84.  
  85.       ifps = new fpstream(rezFileName, ios:out|ios::binary);
  86.       if (!ifps->good())
  87.       {
  88.            cerr << rezFileName << ": init failed..." << end;
  89.            exit(1);
  90.       }
  91.       // »α«óÑα¬á »«Γ«¬á ¡á »α¿ú«ñ¡«ßΓ∞ »ÑαÑñ ó맮ó«¼
  92.       // ¬«¡ßΓαπ¬Γ«αá TResource;
  93.       // «Γ¬αδΓ¿Ñ fpstream ñ½∩ óδó«ñá ó ñó«¿τ¡«¼ αѪ¿¼Ñ;
  94.       // º¡áτÑ¡¿Ñ ΓαÑΓ∞Ñú« áαúπ¼Ñ¡Γá »« π¼«½τá¡¿ε »α¿¡¿¼áÑΓß∩
  95.       // ¬á¬ filebuf::openprot;
  96.       // «Φ¿í¬á íπñÑΓ «íαáí«Γá¡á ß óδñáτÑ⌐ ß««íΘÑ¡¿∩;
  97.       // í«½ÑÑ »«ñα«í¡« φΓ« »α¿ó«ñ¿Γß∩ ó
  98.       // ñѼ«¡ßΓαᵿ«¡¡«¼ Σá⌐½Ñ LISTDLG.CPP
  99.  
  100.       TResourceFile *myRez;
  101.       myRez = new TResourceFile(ifps);
  102.       if(!myRez)
  103.       {
  104.            cerr << "Resource file init failed...";
  105.            exit(1);
  106.       }
  107.       // ΓÑ»Ñα∞ myRez.stream ßó∩ºá¡ ß ifps ¿ ú«Γ«ó ¬ αáí«ΓÑ
  108.  
  109.       // ß«ºñá¡¿Ñ ßΓ᫬¿ ß«ßΓ«∩¡¿∩
  110.       // ñ½∩ íπñπΘ¿σ »α¿¬½áñ¡δσ »α«úαá¼¼
  111.  
  112.       TRect r(0, 24, 80, 25);
  113.       TStatusLine *sl;
  114.       sl = new TStatusLine (r
  115.             *new TStatusDef(0, 0xFFFF)+
  116.               *new TStatusItem("-Alt-X- Exit", kbAltX, cmQuit)+
  117.                 new TStatusItem(-Alt-F3- Close", kbAltF3, cmClose));
  118.       if (!sl)
  119.         {cerr << "Statusline init failed...";
  120.         exit(1);
  121.       }
  122.  
  123.       myRez->put(sl,"Waldo");
  124.       /* æ«σαá¡Ñ¡¿Ñ ßΓ᫬¿ ß«ßΓ«∩¡¿∩ ó αÑßπαßÑ ß ¬½ετ«¼ "Waldo".
  125.          ü«½ÑÑ »«½¡á∩ »α«úαá¼¼á ñ«½ª¡á ó¡áτá½Ñ »α«óÑα¿Γ∞ ¬½ετ ¡á
  126.          π¡¿¬á½∞¡«ßΓ∞. àß½¿ «¡ πªÑ ßπΘÑßΓóπÑΓ, Γ« »«½∞º«óáΓѽ∞
  127.          ñ«½ªÑ¡ «»áßáΓ∞ß∩ »ÑαѺỿ߿ «íΩѬΓá ó αÑßπαß.
  128.  
  129.       Turbo Vision ñ½∩ æ++        = 217 =
  130.  
  131.       */
  132.  
  133.       destroy sl;
  134.       // »αÑñ»«½áúáÑΓß∩, τΓ« í«½∞ΦÑ ¡¿τÑú« ¡Ñ ¡πª¡«!
  135.  
  136.       destroy myRez;
  137.       // «¬«¡τá¡¿Ñ αáí«Γδ »α«úαá¼¼δ. ÄíΩÑ¬Γ myRez ΓÑ»Ñα∞ ß«σαá¡Ñ¡
  138.       // ó Σá⌐½Ñ MY.REZ
  139.       ...
  140.  
  141.  
  142.  
  143.  
  144.       Turbo Vision ñ½∩ æ++        = 218 =
  145.  
  146.                                                ùΓÑ¡¿Ñ αÑßπαß«ó
  147.       -----------------------------------------------------------------
  148.  
  149.            é«ßßΓá¡«ó½Ñ¡¿Ñ αÑßπα߫󠿺 Σá⌐½á ΓᬪѠ»α«ßΓ«, ¬á¬ ¿ ¿σ ß«σ-
  150.       αá¡Ñ¡¿Ñ. æ¡áτá½á ¡πª¡« óδºóáΓ∞ Σπ¡¬µ¿ε  TResource::get  ß  ¿¼Ñ¡Ñ¼
  151.       ó«ßßΓá¡áó½¿óáѼ«ú« «íΩѬΓá  ó  ¬áτÑßΓóÑ áαúπ¼Ñ¡Γá.  Ä¡á ó«ºóαáΓ¿Γ
  152.       π¬áºáΓѽ∞ void* ¡á ¿ß¬«¼δ⌐ φ½Ñ¼Ñ¡Γ.  ¥Γ« ßñѽᡫ ñ½∩ Γ«ú«,  τΓ«íδ
  153.       ¼«ª¡« í佫 π¬áºδóáΓ∞ ¡á «íΩÑ¬Γ ½εí«ú« Γ¿»á.
  154.  
  155.            ÉÑßπαß ßΓ᫬¿ ß«ßΓ«∩¡¿∩, ß«ºñá¡¡δ⌐ ó »αÑñδñπΘѼ »α¿¼ÑαÑ, ¼«-
  156.       ª¡« ó«ßßΓá¡«ó¿Γ∞  ¿  ¿ß»«½∞º«óáΓ∞ ¬á¬ »«¬áºá¡« ó »α¿óÑñÑ¡¡«⌐ ¡¿ªÑ
  157.       »α«úαá¼¼Ñ.  Äß¡«ó¡á∩ ¿ñÑ∩ ºá¬½ετáÑΓß∩ ó ºá¼Ñ¡Ñ  «íδτ¡«ú«  «íΩѬΓá
  158.       initStatusLine,  ¬«Γ«αδ⌐ ß«ºñá¡ ¬«¡ßΓαπ¬Γ«α«¼ TProgInit, "ú«Γ«óδ¼
  159.       ¬ π»«ΓαÑí½Ñ¡¿ε" «íΩÑ¬Γ«¼, ß«σαá¡Ñ¡¡δ¼ ó Σá⌐½Ñ αÑßπαß«ó MY.REZ.
  160.  
  161.            Åα¿¼Ñτá¡¿Ñ: é  »α¿¼ÑαÑ   »α«»πΘÑ¡δ   ñ¿αÑ¬Γ¿óδ   #define   ¿
  162.                        #include,  τΓ«íδ  ¡Ñ »ÑαÑ»«½¡∩Γ∞ »α«úαá¼¼π ¿ºíδ-
  163.                        Γ«τ¡«⌐ ¿¡Σ«α¼áµ¿Ñ⌐.
  164.  
  165.       const char rezFileName[] = "MY.REZ";
  166.  
  167.       class TMyApp: public TApplication
  168.       {
  169.  
  170.       public:
  171.  
  172.          TMyApp();
  173.          static TStatusLine *initStatusLine(TRect);
  174.          ...
  175.       };
  176.       // ñ½∩ φΓ«ú« »α¿¼Ñαá »α«»πΘÑ¡δ «»αÑñѽѡ¿∩ ñ½∩ ßΓ᫬¿ ¼Ñ¡ε
  177.       // ¿ αáí«τÑ⌐ «í½áßΓ¿
  178.  
  179.       TMyApp::TMyApp():TProgInit(&TMyApp::initStatusLine)
  180.       {
  181.       }
  182.  
  183.       TStatusLine *TMyApp()::initStatusLine(TRect)
  184.       {
  185.          fpstream *ofps;
  186.          ofps = new fpstream(rezFileName, ios::in|os::binary);
  187.          if (!ofps->good())
  188.             massageBox("ÄΦ¿í¬á «Γ¬αδΓ¿∩ »«Γ«¬á", mfError|mfOKButton);
  189.       // ¬«¡Γα«½∞  ofps  ¡á  »α¿ú«ñ¡«ßΓ∞  ¬ ¿ß»«½∞º«óá¡¿ε »ÑαÑñ ó맮ó«¼
  190.       // ¬«¡ßΓαπ¬Γ«αá TResource (ofps ñ«½ªÑ¡ íδΓ∞ ¡Ñ ¡«½∞)
  191.       // «Γ¬αδΓ¿Ñ »«Γ«¬á ó αѪ¿¼Ñ ñó«¿τ¡«ú« óó«ñá; º¡áτÑ¡¿Ñ ΓαÑΓ∞Ñú«
  192.       // áαúπ¼Ñ¡Γá, »α¿¡¿¼áѼ«Ñ »« π¼«½τá¡¿ε, filebuf::openprot
  193.  
  194.          TResourceFile *myRez;
  195.          myRez = new TResourceFile(ofps);
  196.          if (!myRez)
  197.             messageBox("ÄΦ¿í¬á Σá⌐½á αÑßπαß«ó", mfError|mfOKButton);
  198.          else
  199.  
  200.       Turbo Vision ñ½∩ æ++        = 219 =
  201.  
  202.             return (TStatusLine *) myRez->get (Waldo);
  203.       }
  204.       ...
  205.       int main()
  206.       {
  207.          TMyApp waldoApp;
  208.          waldoApp.run;
  209.          return 0;
  210.       }
  211.  
  212.            Åα¿ ßτ¿Γδóá¡¿¿  «íΩѬΓá ¿º αÑßπαßá ¡Ñ«íσ«ñ¿¼« πτ¿ΓδóáΓ∞ ó«º-
  213.       ¼«ª¡«ßΓ∞ »«½πτÑ¡¿∩ ¡π½Ñó«ú« π¬áºáΓѽ∩.  àß½¿ ¿¼∩ ¿¡ñѬßá  ¡ÑóÑα¡«
  214.       (Γ.Ñ. αÑßπαß ß Γᬿ¼ ¬½ετ«¼ ó Σá⌐½Ñ «ΓßπΓßΓóπÑΓ),  Γ« Σπ¡¬µ¿∩ get
  215.       ó«ºóαáΓ¿Γ 0.  Äñ¡á¬«, »«ß½Ñ «Γ½áñ¬¿ »α«úαá¼¼δ φΓá »α«í½Ñ¼á ß¬«αÑÑ
  216.       óßÑú« «Γ»áñÑΓ.
  217.  
  218.            ÄíΩÑ¬Γ ¼«ª¡« ó«ßßΓá¡áó½¿óáΓ∞ ¿º Σá⌐½á αÑßπαß«ó ¡Ñ«ñ¡«¬αáΓ¡«.
  219.       îὫóÑα«∩Γ¡«,  τΓ« óδ ºáσ«Γ¿ΓÑ »α«ñѽáΓ∞ φΓ« ß« ßΓ᫬«⌐ ß«ßΓ«∩¡¿∩
  220.       ¿º ¡áΦÑú« »α¿¼Ñαá,  σ«Γ∩ »«½∞º«óáΓÑ½ε ¼«ªÑΓ ¡Ñ«ñ¡«¬αáΓ¡«  »«¡áñ«-
  221.       í¿Γ∞ß∩, ¡á»α¿¼Ñα, »á¡Ñ½∞ ñ¿á½«úá. é φΓ«¼ ß½πτáÑ αÑßπαß íπñÑΓ ¼¡«-
  222.       ú«¬αáΓ¡« óδñáóáΓ∞ «íΩÑ¬Γ »« ºá»α«ßπ »«½∞º«óáΓѽ∩.
  223.  
  224.  
  225.  
  226.  
  227.       Turbo Vision ñ½∩ æ++        = 220 =
  228.  
  229.                                                  æ»¿ß¬¿ ßΓ᫬
  230.       -----------------------------------------------------------------
  231.  
  232.            èα«¼Ñ ßΓá¡ñáαΓ¡«ú« ¼Ñσá¡¿º¼á αÑßπαß«ó,  Turbo Vision »«ññÑα-
  233.       ª¿óáÑΓ  ñóᠠ߻ѵ¿á½¿º¿α«óá¡¡δσ  «íΩѬΓá,  ¬«Γ«αδÑ   «íαáíáΓδóáεΓ
  234.       ß»¿ß¬¿ ßΓ᫬.  É¿ßπ¡«¬ 9.1 »«¬áºδóáÑΓ ¿σ ¼ÑßΓ« ó ¿Ñαáασ¿¿ ¬½áßß«ó
  235.       Turbo Vision (¬á¬ »α¿¡∩Γ« ó æ++ ßΓαѽ¬¿ π¬áºδóáεΓ »α∩¼« ¡á  íẫ-
  236.       óδ⌐ ¬½áßß).
  237.  
  238.                                ┌───────────────┐  ┌───────────────┐
  239.                                │    TObject    │  │  TStreamable  │
  240.                                └───────────────┘  └───────────────┘
  241.            ┌─────────────┐           ^                      ^
  242.            │  TStrindex  │           │     ┌────────────────┤
  243.            └─────────────┘           ├─────┼────────────┐   │
  244.                                ┌─────┴─────┴───┐  ┌─────┴───┴─────┐
  245.                                │ TStrListMaker │  │   TStringList │
  246.                                └───────────────┘  └───────────────┘
  247.  
  248.                      É¿ßπ¡«¬ 9.1. êÑαáασ¿∩ ß»¿ß¬«ó ßΓ᫬
  249.  
  250.       Åα¿¼Ñτá¡¿Ñ: ò«Γ∩ ß»¿ß¬¿ ßΓ᫬ ¼Ñ¡ÑÑ ú¿í¬¿, τѼ «ßΓá½∞¡δÑ αÑßπαßδ,
  251.                   ¡«  Ñß½¿  ¿σ  σ«α«Φ«  αáºαáí«ΓáΓ∞,  Γ« ¼«ª¡« íδßΓα« ¿
  252.                   πñ«í¡« ¿ß»«½∞º«óáΓ∞.
  253.  
  254.            æ»¿ß«¬ ßΓ᫬ ∩ó½∩ÑΓß∩ »α«ßΓÑ⌐Φ¿¼ αÑßπαß«¼, ¬«Γ«αδ⌐ »«ºó«½∩ÑΓ
  255.       óδ»«½¡∩Γ∞ ñ«ßΓπ» ¬ «íΩѬΓá¼ ¡Ñ »« ¬½ετÑó«⌐ ßΓ᫬Ñ,  á »«  ¡«¼Ñαπ,
  256.       ¬«Γ«αδ⌐ ¿¼ÑÑΓ Γ¿» unsigned short.  ¥Γ« «í½ÑúτáÑΓ ºáñáτ¿ ¡áßΓα«⌐¬¿
  257.       ¿ ¼Ñªñπ¡áα«ñ¡«ú« ¿ß»«½∞º«óá¡¿∩ »α«úαá¼¼.  ìÑ«íσ«ñ¿¼« τÑΓ¬« αẽ¿-
  258.       τáΓ∞ ¬½áßßδ TStringList ¿ TStringCollection. æ»¿ß«¬ ßΓ᫬ áßß«µ¿-
  259.       ¿απÑΓß∩  ß  «íΩÑ¬Γ«¼  ifpstream,  Γ«úñá  ¬á¬ ¡áí«α ßΓ᫬ ∩ó½∩ÑΓß∩
  260.       »α«ßΓ« π»«α∩ñ«τÑ¡¡«⌐ »«ß½Ññ«óáΓѽ∞¡«ßΓ∞ε íѺ ¬á¬«⌐-½¿í«  ßó∩º¿  ß
  261.       »«Γ«¬«¼.
  262.  
  263.            ê¡ΓÑúα¿α«óá¡¡á∩ ßαÑñá  Σ¿α¼δ Borland ¿ß»«½∞ºπÑΓ ñ½∩ óßÑσ ß«-
  264.       «íΘÑ¡¿⌐ «í «Φ¿í¬áσ ß»¿ß¬¿ ßΓ᫬.  ¥Γ« «º¡áτáÑΓ, τΓ« »α«úαá¼¼á óδ-
  265.       ºδóáÑΓ  ß««íΘÑ¡¿Ñ «í «Φ¿í¬Ñ »α«ßΓ« »« Ñú« ¡«¼Ñαπ ¿ αẽ¿τ¡δÑ óÑα-
  266.       ß¿¿ ß««íΘÑ¡¿⌐,  ¡á»¿ßá¡¡δÑ  ñ½∩  αẽ¿τ¡δσ  ßΓαá¡,  íπñπΓ  óδñá¡δ
  267.       ¡Ñºáó¿ß¿¼«  «Γ  ∩ºδ¬á ¡á ¬«Γ«α«¼ «¡¿ αÑ὿º«óá¡δ.  Éẽ¿τ¿∩ ¼Ñªñπ
  268.       ß»¿ß¬á¼¿ ßΓ᫬ ¿  «í몭«óÑ¡¡δ¼¿  αÑßπαßἿ  ó¿ñ¡δ  »α¿  ßαáó¡Ñ¡¿¿
  269.       ¬½áßß«ó TStrIndexRec ¿ TResourceItem. Å«ß½Ññ¡¿⌐ ¿º ¡¿σ ¿ß»«½∞ºπÑΓ
  270.       ¿¡ñѬߠñ½∩ »«¿ß¬á αÑßπαß«ó.
  271.  
  272.       struct TResourceItem
  273.       {
  274.            long pos;
  275.            long size;
  276.            char *key;
  277.       };
  278.  
  279.       class TStrIndexRec
  280.       {
  281.       public;
  282.  
  283.       Turbo Vision ñ½∩ æ++        = 221 =
  284.  
  285.  
  286.            ushort key;
  287.            ushort count;
  288.            ushort offset;
  289.       };
  290.  
  291.       Åα¿¼Ñτá¡¿Ñ: æóÑñÑ¡¿∩ « ¬«¡ßΓαπ¬Γ«αá-ßΓα«¿Γѽ∩σ  (build) ¡áσ«ñ∩Γß∩
  292.                   ó ú½áóÑ 8 ¿ ó αáºñѽѠTStreamable ú½áóδ 13.
  293.  
  294.            è½áßß TStringList ¿¼ÑÑΓ Γ«½∞¬« ¬«¡ßΓαπ¬Γ«α-ßΓα«¿Γѽ∞,  ¬«Γ«-
  295.       α«¼π ó ¬áτÑßΓóÑ áαúπ¼Ñ¡Γá »ÑαÑñáÑΓß∩ streamableInit. ¥Γ« ∩ó½∩ÑΓß∩
  296.       ß½ÑñßΓó¿Ñ¼ Γ«ú«,  τΓ«  ß»¿ß¬¿  ßΓ᫬  ßπΘÑßΓóπεΓ  Γ«½∞¬« ó Σá⌐½áσ
  297.       αÑßπαß«ó: «¡¿ ñ«ßΓπ»¡δ Γ«½∞¬« τÑαѺ Σá⌐½δ  αÑßπαß«ó  ¿  ¡Ñ  ¼«úπΓ
  298.       íδΓ∞ ß«ºñá¡δ úñÑ-½¿í« ó¡Ñ ¿σ. æ»¿ß¬¿ ßΓ᫬ ¼«úπΓ íδΓ∞ Γ«½∞¬« »α«-
  299.       τ¿Γá¡δ, »«φΓ«¼π ñ½∩ ¡¿σ αÑ὿º«óá¡á Σπ¡¬µ¿∩ get, á Σπ¡¬µ¿∩ put ¡Ñ
  300.       αÑ὿º«óá¡á.
  301.  
  302.                                          æ«ºñá¡¿Ñ ß»¿ß¬«ó ßΓ᫬
  303.       -----------------------------------------------------------------
  304.  
  305.       Åα¿¼Ñτá¡¿Ñ: è½áßß TStringList óºá¿¼«ñÑ⌐ßΓóπÑΓ ß »«Γ«¬á¼¿, «íÑß»Ñ-
  306.                   τ¿óá∩ ñ«ßΓπ» ¬  ßΓ᫬á¼.  è½áßß  TSringMaker  ß«ºñáÑΓ
  307.                   ß»¿ß¬¿ ßΓ᫬.
  308.  
  309.            è½áßß TStrListMaker  ß«ºñáÑΓ  ß»¿ß¬¿ ßΓ᫬ ó Σá⌐½áσ αÑßπαß«ó
  310.       ñ½∩ »«ß½ÑñπεΘÑú« ¿σ ¿ß»«½∞º«óá¡¿∩ «íΩѬΓἿ  ¬½áßßá  TStringList.
  311.       ÄíΩѬΓδ ¬½áßßá  TStrListMaker  ¼«úπΓ  Γ«½∞¬«  ºá»¿ßδóáΓ∞ ñá¡¡δÑ ó
  312.       Σá⌐½, ó «Γ½¿τ¿Ñ «Γ «íΩÑ¬Γ«ó  ¬½áßßá  TStringList,  ¬«Γ«αδÑ  ¼«úπΓ
  313.       ½¿Φ∞ ßτ¿ΓδóáΓ∞ φΓ¿ ñá¡¡δÑ.  Å«φΓ«¼π ñ½∩ TStrListMaker αÑ὿º«óá¡á
  314.       Σπ¡¬µ¿∩ put,  á Σπ¡¬µ¿∩ get «ΓßπΓßΓóπÑΓ.  éßÑ,  τΓ« ¼«ªÑΓ ßñѽáΓ∞
  315.       «íΩÑ¬Γ φΓ«ú« ¬½áßßá - φΓ« ¿¡¿µ¿á½¿º¿α«óáΓ∞ ß»¿ß«¬ ßΓ᫬, ºá»¿ßáΓ∞
  316.       ó ¡Ñú« ßΓ᫬¿ ¿ ß«σαá¡¿Γ∞ ¿σ ó »«Γ«¬Ñ. æ½ÑñπεΘ¿⌐ »α¿¼Ñα ¿½½εßΓα¿-
  317.       απÑΓ φΓ¿ ñÑ⌐ßΓó¿∩.
  318.  
  319.       #define Uses_TStringList
  320.       #define Uses_TStringListMaker
  321.       ...
  322.       #include <tv.h>
  323.       __Link(RStringList);
  324.       ...
  325.       TStrListMaker myStrListMaker(strSize, indexSize);
  326.       // ß«ºñáÑΓß∩ ¼áßß¿ó ßΓ᫬ αẼÑα«¼ ó strSize ¬áªñá∩
  327.       // ß«ºñáÑΓß∩ ¼áßß¿ó «íΩÑ¬Γ«ó Γ¿»á TStrIndexRec αẼÑα«¼
  328.       // ó indexSize, ¬áªñδ⌐ ¿º ¬«Γ«αδσ »«ññÑনóáÑΓ φ½Ñ¼Ñ¡Γδ ñá¡¡δσ
  329.       // key, count ¿ offset (¬½ετ, ßτÑΓτ¿¬ ¿ ß¼ÑΘÑ¡¿Ñ)
  330.       // »«½∩ ¿¡ñѬßá πßΓá¡áó½¿óáεΓß∩ ó Γ«τ¬π ¼áßß¿óá
  331.       // «íΩÑ¬Γ«ó TStrIndexRec.
  332.  
  333.       myStrListMaker.put( 1, "Pass, Do not GO!");
  334.       myStrListMaker.put( 2, "Collect $500!");
  335.       ...
  336.       opfstream("STR.LST");
  337.  
  338.       Turbo Vision ñ½∩ æ++        = 222 =
  339.  
  340.       ops << myStrListMaker;
  341.       ...
  342.       TStringList *myStringList;
  343.       // πßΓá¡«ó¬á indexSize, index ¿ basePos ó 0
  344.  
  345.       char legend[maxLeg];
  346.  
  347.       ipfstream ifs("STR.LST");
  348.       ifs >> myStringList;
  349.  
  350.       myStringList->get(legend,1);
  351.  
  352.       count << "Legend 1: " << legend << end;
  353.       // displays "Pass, Do not GO!"
  354.