home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
BBS 1
/
BBS#1.iso
/
document
/
tvcpp.a07
/
TV_DOC.DOC
Wrap
Text File
|
1992-03-03
|
14KB
|
354 lines
ìáí«αδ ßΓ᫬ ß«ºñáεΓß∩ ¬«¡ßΓαπ¬Γ«α«¼ TResourceFile, á »«ñ-
ñÑনóáεΓß∩ ¿ ∩ó½∩εΓß∩ ñ«ßΓπ»¡δ¼¿ »«ßαÑñßΓó«¼ Σπ¡¬µ¿⌐ φΓ«ú« ªÑ
¬½áßßá get ¿ put. Äñ¡á¬« Σá⌐½ »«Γ«¬á ñ«½ªÑ¡ íδΓ∞ «Γ¬αδΓ (ß«ºñá¡ ¿
¿¡¿µ¿á½¿º¿α«óá¡) ñ« ß«ºñá¡¿∩ Σá⌐½á αÑßπαß«ó. öá¬Γ¿τÑ߬¿ φΓ« «º¡á-
τáÑΓ, τΓ« ¡Ñ«íσ«ñ¿¼« óδºóáΓ∞ ¬«¡ßΓαπ¬Γ«α, 𠬫ëα«ú« ó ¬áτÑßΓóÑ
áαúπ¼Ñ¡Γá íπñÑΓ πªÑ ßπΘÑßΓóπεΘ¿⌐ π¬áºáΓѽ∞ ¡á fpstream:
TResourceFile::TResourceFile(fstream *aStream);
Turbo Vision ñ½∩ æ++ = 214 =
// ß«ºñá¡¿Ñ Σá⌐½á αÑßπαß«ó »α¿ »«¼«Θ¿ π¬áºáΓѽ∩ aStream,
// »ÑαÑñáóáѼ«ú« ó ¬áτÑßΓóÑ áαúπ¼Ñ¡Γá
Turbo Vision ñ½∩ æ++ = 215 =
櫺ñá¡¿Ñ αÑßπαß«ó
-----------------------------------------------------------------
Åα«µÑßß ß«ºñá¡¿∩ ¿ ¿ß»«½∞º«óá¡¿∩ αÑßπαß«ó ó¬½ετáÑΓ ó ßÑí∩
τÑΓδαÑ Φáúá. æ¡áτá½á ¡Ñ«íσ«ñ¿¼« «Γ¬αδΓ∞ »«Γ«¬, ºáΓѼ »α«¿¡¿µ¿á½¿-
º¿α«óáΓ∞ Σá⌐½ αÑßπαß«ó ó »«Γ«¬Ñ, ºáΓѼ ß«σαá¡¿Γ∞ ¡πª¡«Ñ ¬«½¿τÑßΓ-
ó« «íΩÑ¬Γ«ó ó¼ÑßΓÑ ß ¿σ ¬½ετἿ ¿, ¡á¬«¡Ñµ, ºá¬αδΓ∞ »«Γ«¬ »«
«¬«¡τá¡¿ε αáí«Γδ.
Åα¿¼Ñτá¡¿Ñ: é ñѼ«¡ßΓαᵿ«¡¡«¼ »α¿¼ÑαÑ GENFORM »«¬áºδóáεΓß∩
αÑßπαßδ Turbo Vision ó ñÑ⌐ßΓó¿¿, á Γá¬ªÑ ¿σ
»αá¬Γ¿τÑ߬¿Ñ 󫺼«ª¡«ßΓ¿.
ì¿ªÑ »α¿ó«ñ¿Γß∩ «Γαδó«¬ ó ¬«Γ«α«¼ «»¿ßá¡« ß«ºñá¡¿Ñ »α«ßΓ«ú«
Σá⌐½á αÑßπαß«ó ß ¿¼Ñ¡Ñ¼ MY.REZ, ¿ß»«½∞ºπѼ«ú« ñ½∩ ß«σαá¡Ñ¡¿∩ «ñ-
¡«ú« αÑßπαßá - ßΓ᫬¿ ß«ßΓ«∩¡¿∩ ß ¬½ετ«¼ "Waldo". öπ¡¬µ¿∩
TResourceFile::put ¿¼ÑÑΓ ñóá áαúπ¼Ñ¡Γá: π¬áºáΓѽ∞ TStreamable*,
π¬áºδóáεΘ¿⌐ ¡á φ½Ñ¼Ñ¡Γ, ¬«Γ«αδ⌐ íπñÑΓ ß«σαá¡Ñ¡ ¿ ¬½ετ const char*
key. ê¼Ñ⌐ΓÑ ó ó¿ñπ, τΓ« ñ¿αÑ¬Γ¿óá #define ñ«½ª¡á »αÑñΦÑßΓó«óáΓ∞
ñ¿αÑ¬Γ¿óÑ #include<tv.h> ñ½∩ «íÑß»ÑτÑ¡¿∩ »αáó¿½∞¡«ú« ó¬½ετÑ¡¿∩
Σá⌐½«ó ºáú«½«ó¬«ó ¿ αÑú¿ßΓαᵿ¿ ¬½áßß«ó, óºá¿¼«ñÑ⌐ßΓóπεΘ¿σ ß »«-
Γ«¬á¼¿.
/* ó αÑá½∞¡δσ »α¿¬½áñ¡δσ »α«úαá¼¼á ñ¿αÑ¬Γ¿óá #define ¿ #include
«íδτ¡« »«¼ÑΘáεΓß∩ ó αẽ¿τ¡δÑ Σá⌐½δ */
#define Uses_TRect
#define Uses_TStatusLine
#define Uses_TStatusDef
#define Uses_TStatusItem
/* »«ß½Ññ¡¿Ñ ñóÑ ñ¿αÑ¬Γ¿óδ #define, σ«Γ∩ ¿ ¿ºíδΓ«τ¡δ, ¡« íѺóαÑñ-
¡δ - ß¼«Γα¿ΓÑ ¬«¼¼Ñ¡Γáα¿⌐ »«ß½Ñ «»αÑñѽѡ¿∩ Uses_TResource-
Collection */
#define Uses_TResourceFile
#define Uses_TResourceCollection
/* «»αÑñѽѡ¿Ñ #define Uses_TResourceCollection ñѽáΓ∞ ¡Ñ «í∩ºá-
Γѽ∞¡«, ¡« «Φ¿í¬¿ ¡Ñ »α«¿º«⌐ñÑΓ: TV.H πªÑ º¡áÑΓ, τΓ« RESOURCE.H
íπñÑΓ ó¬½ετÑ¡, Γᬠ¬á¬ ßñѽᡫ «»αÑñѽѡ¿Ñ Uses_TResourceFile
*/
#define Uses_fpstream
...
// ñ«»«½¡¿Γѽ∞¡δÑ «»αÑñѽѡ¿∩ ñ½∩ ¬áªñ«ú« ¿ß»«½∞ºπѼ«ú« ¬½áßßá
...
// αÑú¿ßΓαᵿ∩ ¬½áßß«ó, ¿ß»«½∞ºπεΘ¿σ »«Γ«¬¿:
__link(RStatusLine);
__link(RResourceCollection);
/* ºá»«¼¡¿ΓÑ, τΓ« TResourceFile ¡Ñ ¿ß»«½∞ºπÑΓ »«Γ«¬¿!
Å«Γ«¬¿ ¿ß»«½∞ºπεΓ Γ«½∞¬« ¬«½½Ñ¬µ¿¿ αÑßπαß«ó */
Turbo Vision ñ½∩ æ++ = 216 =
...
#include<tv.h>
// ¡Ñ«íσ«ñ¿¼δÑ ñ«»«½¡¿Γѽ∞¡δÑ ßΓá¡ñáαΓ¡δÑ Σá⌐½δ ºáú«½«ó¬«ó
...
const char rezFileName[] = "MY.REZ";
cout << "櫺ñá¡¿Ñ " << rezFileName << end;
fpstream *ifps;
ifps = new fpstream(rezFileName, ios:out|ios::binary);
if (!ifps->good())
{
cerr << rezFileName << ": init failed..." << end;
exit(1);
}
// »α«óÑα¬á »«Γ«¬á ¡á »α¿ú«ñ¡«ßΓ∞ »ÑαÑñ ó맮ó«¼
// ¬«¡ßΓαπ¬Γ«αá TResource;
// «Γ¬αδΓ¿Ñ fpstream ñ½∩ óδó«ñá ó ñó«¿τ¡«¼ αѪ¿¼Ñ;
// º¡áτÑ¡¿Ñ ΓαÑΓ∞Ñú« áαúπ¼Ñ¡Γá »« π¼«½τá¡¿ε »α¿¡¿¼áÑΓß∩
// ¬á¬ filebuf::openprot;
// «Φ¿í¬á íπñÑΓ «íαáí«Γá¡á ß óδñáτÑ⌐ ß««íΘÑ¡¿∩;
// í«½ÑÑ »«ñα«í¡« φΓ« »α¿ó«ñ¿Γß∩ ó
// ñѼ«¡ßΓαᵿ«¡¡«¼ Σá⌐½Ñ LISTDLG.CPP
TResourceFile *myRez;
myRez = new TResourceFile(ifps);
if(!myRez)
{
cerr << "Resource file init failed...";
exit(1);
}
// ΓÑ»Ñα∞ myRez.stream ßó∩ºá¡ ß ifps ¿ ú«Γ«ó ¬ αáí«ΓÑ
// ß«ºñá¡¿Ñ ßΓ᫬¿ ß«ßΓ«∩¡¿∩
// ñ½∩ íπñπΘ¿σ »α¿¬½áñ¡δσ »α«úαá¼¼
TRect r(0, 24, 80, 25);
TStatusLine *sl;
sl = new TStatusLine (r
*new TStatusDef(0, 0xFFFF)+
*new TStatusItem("-Alt-X- Exit", kbAltX, cmQuit)+
new TStatusItem(-Alt-F3- Close", kbAltF3, cmClose));
if (!sl)
{cerr << "Statusline init failed...";
exit(1);
}
myRez->put(sl,"Waldo");
/* æ«σαá¡Ñ¡¿Ñ ßΓ᫬¿ ß«ßΓ«∩¡¿∩ ó αÑßπαßÑ ß ¬½ετ«¼ "Waldo".
ü«½ÑÑ »«½¡á∩ »α«úαá¼¼á ñ«½ª¡á ó¡áτá½Ñ »α«óÑα¿Γ∞ ¬½ετ ¡á
π¡¿¬á½∞¡«ßΓ∞. àß½¿ «¡ πªÑ ßπΘÑßΓóπÑΓ, Γ« »«½∞º«óáΓѽ∞
ñ«½ªÑ¡ «»áßáΓ∞ß∩ »ÑαѺỿ߿ «íΩѬΓá ó αÑßπαß.
Turbo Vision ñ½∩ æ++ = 217 =
*/
destroy sl;
// »αÑñ»«½áúáÑΓß∩, τΓ« í«½∞ΦÑ ¡¿τÑú« ¡Ñ ¡πª¡«!
destroy myRez;
// «¬«¡τá¡¿Ñ αáí«Γδ »α«úαá¼¼δ. ÄíΩÑ¬Γ myRez ΓÑ»Ñα∞ ß«σαá¡Ñ¡
// ó Σá⌐½Ñ MY.REZ
...
Turbo Vision ñ½∩ æ++ = 218 =
ùΓÑ¡¿Ñ αÑßπαß«ó
-----------------------------------------------------------------
é«ßßΓá¡«ó½Ñ¡¿Ñ αÑßπαß«ó ¿º Σá⌐½á Γá¬ªÑ »α«ßΓ«, ¬á¬ ¿ ¿σ ß«σ-
αá¡Ñ¡¿Ñ. æ¡áτá½á ¡πª¡« óδºóáΓ∞ Σπ¡¬µ¿ε TResource::get ß ¿¼Ñ¡Ñ¼
ó«ßßΓá¡áó½¿óáѼ«ú« «íΩѬΓá ó ¬áτÑßΓóÑ áαúπ¼Ñ¡Γá. Ä¡á ó«ºóαáΓ¿Γ
π¬áºáΓѽ∞ void* ¡á ¿ß¬«¼δ⌐ φ½Ñ¼Ñ¡Γ. ¥Γ« ßñѽᡫ ñ½∩ Γ«ú«, τΓ«íδ
¼«ª¡« í佫 π¬áºδóáΓ∞ ¡á «íΩÑ¬Γ ½εí«ú« Γ¿»á.
ÉÑßπαß ßΓ᫬¿ ß«ßΓ«∩¡¿∩, ß«ºñá¡¡δ⌐ ó »αÑñδñπΘѼ »α¿¼ÑαÑ, ¼«-
ª¡« ó«ßßΓá¡«ó¿Γ∞ ¿ ¿ß»«½∞º«óáΓ∞ ¬á¬ »«¬áºá¡« ó »α¿óÑñÑ¡¡«⌐ ¡¿ªÑ
»α«úαá¼¼Ñ. Äß¡«ó¡á∩ ¿ñÑ∩ ºá¬½ετáÑΓß∩ ó ºá¼Ñ¡Ñ «íδτ¡«ú« «íΩѬΓá
initStatusLine, ¬«Γ«αδ⌐ ß«ºñá¡ ¬«¡ßΓαπ¬Γ«α«¼ TProgInit, "ú«Γ«óδ¼
¬ π»«ΓαÑí½Ñ¡¿ε" «íΩÑ¬Γ«¼, ß«σαá¡Ñ¡¡δ¼ ó Σá⌐½Ñ αÑßπαß«ó MY.REZ.
Åα¿¼Ñτá¡¿Ñ: é »α¿¼ÑαÑ »α«»πΘÑ¡δ ñ¿αÑ¬Γ¿óδ #define ¿
#include, τΓ«íδ ¡Ñ »ÑαÑ»«½¡∩Γ∞ »α«úαá¼¼π ¿ºíδ-
Γ«τ¡«⌐ ¿¡Σ«α¼áµ¿Ñ⌐.
const char rezFileName[] = "MY.REZ";
class TMyApp: public TApplication
{
public:
TMyApp();
static TStatusLine *initStatusLine(TRect);
...
};
// ñ½∩ φΓ«ú« »α¿¼Ñαá »α«»πΘÑ¡δ «»αÑñѽѡ¿∩ ñ½∩ ßΓ᫬¿ ¼Ñ¡ε
// ¿ αáí«τÑ⌐ «í½áßΓ¿
TMyApp::TMyApp():TProgInit(&TMyApp::initStatusLine)
{
}
TStatusLine *TMyApp()::initStatusLine(TRect)
{
fpstream *ofps;
ofps = new fpstream(rezFileName, ios::in|os::binary);
if (!ofps->good())
massageBox("ÄΦ¿í¬á «Γ¬αδΓ¿∩ »«Γ«¬á", mfError|mfOKButton);
// ¬«¡Γα«½∞ ofps ¡á »α¿ú«ñ¡«ßΓ∞ ¬ ¿ß»«½∞º«óá¡¿ε »ÑαÑñ ó맮ó«¼
// ¬«¡ßΓαπ¬Γ«αá TResource (ofps ñ«½ªÑ¡ íδΓ∞ ¡Ñ ¡«½∞)
// «Γ¬αδΓ¿Ñ »«Γ«¬á ó αѪ¿¼Ñ ñó«¿τ¡«ú« óó«ñá; º¡áτÑ¡¿Ñ ΓαÑΓ∞Ñú«
// áαúπ¼Ñ¡Γá, »α¿¡¿¼áѼ«Ñ »« π¼«½τá¡¿ε, filebuf::openprot
TResourceFile *myRez;
myRez = new TResourceFile(ofps);
if (!myRez)
messageBox("ÄΦ¿í¬á Σá⌐½á αÑßπαß«ó", mfError|mfOKButton);
else
Turbo Vision ñ½∩ æ++ = 219 =
return (TStatusLine *) myRez->get (Waldo);
}
...
int main()
{
TMyApp waldoApp;
waldoApp.run;
return 0;
}
Åα¿ ßτ¿Γδóá¡¿¿ «íΩѬΓá ¿º αÑßπαßá ¡Ñ«íσ«ñ¿¼« πτ¿ΓδóáΓ∞ ó«º-
¼«ª¡«ßΓ∞ »«½πτÑ¡¿∩ ¡π½Ñó«ú« π¬áºáΓѽ∩. àß½¿ ¿¼∩ ¿¡ñѬßá ¡ÑóÑα¡«
(Γ.Ñ. αÑßπαß ß Γᬿ¼ ¬½ετ«¼ ó Σá⌐½Ñ «ΓßπΓßΓóπÑΓ), Γ« Σπ¡¬µ¿∩ get
ó«ºóαáΓ¿Γ 0. Äñ¡á¬«, »«ß½Ñ «Γ½áñ¬¿ »α«úαá¼¼δ φΓá »α«í½Ñ¼á ߬«αÑÑ
óßÑú« «Γ»áñÑΓ.
ÄíΩÑ¬Γ ¼«ª¡« ó«ßßΓá¡áó½¿óáΓ∞ ¿º Σá⌐½á αÑßπαß«ó ¡Ñ«ñ¡«¬αáΓ¡«.
îὫóÑα«∩Γ¡«, τΓ« óδ ºáσ«Γ¿ΓÑ »α«ñѽáΓ∞ φΓ« ß« ßΓ᫬«⌐ ß«ßΓ«∩¡¿∩
¿º ¡áΦÑú« »α¿¼Ñαá, σ«Γ∩ »«½∞º«óáΓÑ½ε ¼«ªÑΓ ¡Ñ«ñ¡«¬αáΓ¡« »«¡áñ«-
í¿Γ∞ß∩, ¡á»α¿¼Ñα, »á¡Ñ½∞ ñ¿á½«úá. é φΓ«¼ ß½πτáÑ αÑßπαß íπñÑΓ ¼¡«-
ú«¬αáΓ¡« óδñáóáΓ∞ «íΩÑ¬Γ »« ºá»α«ßπ »«½∞º«óáΓѽ∩.
Turbo Vision ñ½∩ æ++ = 220 =
滿߬¿ ßΓ᫬
-----------------------------------------------------------------
èα«¼Ñ ßΓá¡ñáαΓ¡«ú« ¼Ñσá¡¿º¼á αÑßπαß«ó, Turbo Vision »«ññÑα-
ª¿óáÑΓ ñóá ߻ѵ¿á½¿º¿α«óá¡¡δσ «íΩѬΓá, ¬«Γ«αδÑ «íαáíáΓδóáεΓ
ß»¿ß¬¿ ßΓ᫬. É¿ßπ¡«¬ 9.1 »«¬áºδóáÑΓ ¿σ ¼ÑßΓ« ó ¿Ñαáασ¿¿ ¬½áßß«ó
Turbo Vision (¬á¬ »α¿¡∩Γ« ó æ++ ßΓαѽ¬¿ π¬áºδóáεΓ »α∩¼« ¡á íẫ-
óδ⌐ ¬½áßß).
┌───────────────┐ ┌───────────────┐
│ TObject │ │ TStreamable │
└───────────────┘ └───────────────┘
┌─────────────┐ ^ ^
│ TStrindex │ │ ┌────────────────┤
└─────────────┘ ├─────┼────────────┐ │
┌─────┴─────┴───┐ ┌─────┴───┴─────┐
│ TStrListMaker │ │ TStringList │
└───────────────┘ └───────────────┘
É¿ßπ¡«¬ 9.1. êÑαáασ¿∩ ß»¿ß¬«ó ßΓ᫬
Åα¿¼Ñτá¡¿Ñ: ò«Γ∩ ß»¿ß¬¿ ßΓ᫬ ¼Ñ¡ÑÑ ú¿í¬¿, τѼ «ßΓá½∞¡δÑ αÑßπαßδ,
¡« Ñß½¿ ¿σ σ«α«Φ« αáºαáí«ΓáΓ∞, Γ« ¼«ª¡« íδßΓα« ¿
πñ«í¡« ¿ß»«½∞º«óáΓ∞.
滿߫¬ ßΓ᫬ ∩ó½∩ÑΓß∩ »α«ßΓÑ⌐Φ¿¼ αÑßπαß«¼, ¬«Γ«αδ⌐ »«ºó«½∩ÑΓ
óδ»«½¡∩Γ∞ ñ«ßΓπ» ¬ «íΩѬΓá¼ ¡Ñ »« ¬½ετÑó«⌐ ßΓ᫬Ñ, á »« ¡«¼Ñαπ,
¬«Γ«αδ⌐ ¿¼ÑÑΓ Γ¿» unsigned short. ¥Γ« «í½ÑúτáÑΓ ºáñáτ¿ ¡áßΓα«⌐¬¿
¿ ¼Ñªñπ¡áα«ñ¡«ú« ¿ß»«½∞º«óá¡¿∩ »α«úαá¼¼. ìÑ«íσ«ñ¿¼« τÑΓ¬« αẽ¿-
τáΓ∞ ¬½áßßδ TStringList ¿ TStringCollection. 滿߫¬ ßΓ᫬ áßß«µ¿-
¿απÑΓß∩ ß «íΩÑ¬Γ«¼ ifpstream, Γ«úñá ¬á¬ ¡áí«α ßΓ᫬ ∩ó½∩ÑΓß∩
»α«ßΓ« π»«α∩ñ«τÑ¡¡«⌐ »«ß½Ññ«óáΓѽ∞¡«ßΓ∞ε íѺ ¬á¬«⌐-½¿í« ßó∩º¿ ß
»«Γ«¬«¼.
ê¡ΓÑúα¿α«óá¡¡á∩ ßαÑñá Σ¿α¼δ Borland ¿ß»«½∞ºπÑΓ ñ½∩ óßÑσ ß«-
«íΘÑ¡¿⌐ «í «Φ¿í¬áσ ß»¿ß¬¿ ßΓ᫬. ¥Γ« «º¡áτáÑΓ, τΓ« »α«úαá¼¼á óδ-
ºδóáÑΓ ß««íΘÑ¡¿Ñ «í «Φ¿í¬Ñ »α«ßΓ« »« Ñú« ¡«¼Ñαπ ¿ αẽ¿τ¡δÑ óÑα-
ß¿¿ ß««íΘÑ¡¿⌐, ¡á»¿ßá¡¡δÑ ñ½∩ αẽ¿τ¡δσ ßΓαá¡, íπñπΓ óδñá¡δ
¡Ñºáó¿ß¿¼« «Γ ∩ºδ¬á ¡á ¬«Γ«α«¼ «¡¿ αÑ὿º«óá¡δ. Éẽ¿τ¿∩ ¼Ñªñπ
ß»¿ß¬á¼¿ ßΓ᫬ ¿ «í몭«óÑ¡¡δ¼¿ αÑßπαßἿ ó¿ñ¡δ »α¿ ßαáó¡Ñ¡¿¿
¬½áßß«ó TStrIndexRec ¿ TResourceItem. Å«ß½Ññ¡¿⌐ ¿º ¡¿σ ¿ß»«½∞ºπÑΓ
¿¡ñÑ¬ß ñ½∩ »«¿ß¬á αÑßπαß«ó.
struct TResourceItem
{
long pos;
long size;
char *key;
};
class TStrIndexRec
{
public;
Turbo Vision ñ½∩ æ++ = 221 =
ushort key;
ushort count;
ushort offset;
};
Åα¿¼Ñτá¡¿Ñ: æóÑñÑ¡¿∩ « ¬«¡ßΓαπ¬Γ«αá-ßΓα«¿Γѽ∩σ (build) ¡áσ«ñ∩Γß∩
ó ú½áóÑ 8 ¿ ó αáºñÑ½Ñ TStreamable ú½áóδ 13.
è½áßß TStringList ¿¼ÑÑΓ Γ«½∞¬« ¬«¡ßΓαπ¬Γ«α-ßΓα«¿Γѽ∞, ¬«Γ«-
α«¼π ó ¬áτÑßΓóÑ áαúπ¼Ñ¡Γá »ÑαÑñáÑΓß∩ streamableInit. ¥Γ« ∩ó½∩ÑΓß∩
ß½ÑñßΓó¿Ñ¼ Γ«ú«, τΓ« ß»¿ß¬¿ ßΓ᫬ ßπΘÑßΓóπεΓ Γ«½∞¬« ó Σá⌐½áσ
αÑßπαß«ó: «¡¿ ñ«ßΓπ»¡δ Γ«½∞¬« τÑαѺ Σá⌐½δ αÑßπαß«ó ¿ ¡Ñ ¼«úπΓ
íδΓ∞ ß«ºñá¡δ úñÑ-½¿í« ó¡Ñ ¿σ. 滿߬¿ ßΓ᫬ ¼«úπΓ íδΓ∞ Γ«½∞¬« »α«-
τ¿Γá¡δ, »«φΓ«¼π ñ½∩ ¡¿σ αÑ὿º«óá¡á Σπ¡¬µ¿∩ get, á Σπ¡¬µ¿∩ put ¡Ñ
αÑ὿º«óá¡á.
櫺ñá¡¿Ñ ß»¿ß¬«ó ßΓ᫬
-----------------------------------------------------------------
Åα¿¼Ñτá¡¿Ñ: è½áßß TStringList óºá¿¼«ñÑ⌐ßΓóπÑΓ ß »«Γ«¬á¼¿, «íÑß»Ñ-
τ¿óá∩ ñ«ßΓπ» ¬ ßΓ᫬á¼. è½áßß TSringMaker ß«ºñáÑΓ
ß»¿ß¬¿ ßΓ᫬.
è½áßß TStrListMaker ß«ºñáÑΓ ß»¿ß¬¿ ßΓ᫬ ó Σá⌐½áσ αÑßπαß«ó
ñ½∩ »«ß½ÑñπεΘÑú« ¿σ ¿ß»«½∞º«óá¡¿∩ «íΩѬΓἿ ¬½áßßá TStringList.
ÄíΩѬΓδ ¬½áßßá TStrListMaker ¼«úπΓ Γ«½∞¬« ºá»¿ßδóáΓ∞ ñá¡¡δÑ ó
Σá⌐½, ó «Γ½¿τ¿Ñ «Γ «íΩÑ¬Γ«ó ¬½áßßá TStringList, ¬«Γ«αδÑ ¼«úπΓ
½¿Φ∞ ßτ¿ΓδóáΓ∞ φΓ¿ ñá¡¡δÑ. Å«φΓ«¼π ñ½∩ TStrListMaker αÑ὿º«óá¡á
Σπ¡¬µ¿∩ put, á Σπ¡¬µ¿∩ get «ΓßπΓßΓóπÑΓ. éßÑ, τΓ« ¼«ªÑΓ ßñѽáΓ∞
«íΩÑ¬Γ φΓ«ú« ¬½áßßá - φΓ« ¿¡¿µ¿á½¿º¿α«óáΓ∞ ß»¿ß«¬ ßΓ᫬, ºá»¿ßáΓ∞
ó ¡Ñú« ßΓ᫬¿ ¿ ß«σαá¡¿Γ∞ ¿σ ó »«Γ«¬Ñ. æ½ÑñπεΘ¿⌐ »α¿¼Ñα ¿½½εßΓα¿-
απÑΓ φΓ¿ ñÑ⌐ßΓó¿∩.
#define Uses_TStringList
#define Uses_TStringListMaker
...
#include <tv.h>
__Link(RStringList);
...
TStrListMaker myStrListMaker(strSize, indexSize);
// ß«ºñáÑΓß∩ ¼áßß¿ó ßΓ᫬ αẼÑα«¼ ó strSize ¬áªñá∩
// ß«ºñáÑΓß∩ ¼áßß¿ó «íΩÑ¬Γ«ó Γ¿»á TStrIndexRec αẼÑα«¼
// ó indexSize, ¬áªñδ⌐ ¿º ¬«Γ«αδσ »«ññÑনóáÑΓ φ½Ñ¼Ñ¡Γδ ñá¡¡δσ
// key, count ¿ offset (¬½ετ, ßτÑΓτ¿¬ ¿ ß¼ÑΘÑ¡¿Ñ)
// »«½∩ ¿¡ñѬßá πßΓá¡áó½¿óáεΓß∩ ó Γ«τ¬π ¼áßß¿óá
// «íΩÑ¬Γ«ó TStrIndexRec.
myStrListMaker.put( 1, "Pass, Do not GO!");
myStrListMaker.put( 2, "Collect $500!");
...
opfstream("STR.LST");
Turbo Vision ñ½∩ æ++ = 222 =
ops << myStrListMaker;
...
TStringList *myStringList;
// πßΓá¡«ó¬á indexSize, index ¿ basePos ó 0
char legend[maxLeg];
ipfstream ifs("STR.LST");
ifs >> myStringList;
myStringList->get(legend,1);
count << "Legend 1: " << legend << end;
// displays "Pass, Do not GO!"