|
ArcaOS 5.0 Russian
Russian ARCAOS exists and it's available since the middle of 2017.
All versions are supported: 5.0, 5.0.1, 5.0.2.
eCo Software is able release OS/2 LIP packages for any other language
(German, Dutch, Brazilian Portuguese, Spanish, Sweden, etc)
|
Using XObject for Configuration Files |
TITLE: Using XObject for Configuration Files
DATE: 2010-09-28 11:21:23
AUTHOR: Joseph Shrago
Please use online translator go to http://translate.google.com and request the translation of http://ru.ecomstation./showarticle.php?id=220 to your language |
..........:
... ...... ......... ......... ........ ...... . ....... ............
(ini-......, ........, registry . ......).
.. .... ........... (................) ....... ........... ...... ........
(............) ........... ............. ... .......... ......
(....... ........ ... OS/2), .. ....... ...... ............. ........ .... ........
.............. (.............) ........, . ..... ........ (API) .............
... . ..... OS/2.
.... ........ ..... ........... ........ ........ . .... ... "........=........",
..... ....... .............. . ..... ......... *ix (..... ....... .. ..
........ .... .. ......... .......... ...... ....... . sendmail.cf - ....
...... .. ...), .. ....... .. ....... ...... .... ......... (.........)
...... config.sys . autoexec.bat, ......... .......... ....... ..........
...... .... ........ ...., . ........ ......., ........ ..... ..... config.sys
.....:
SET EPMPATH=C:\OS2\APPS;C:\opendoc\BIN;
PROTECTONLY=NO
SHELL=C:\OS2\MDOS\COMMAND.COM C:\OS2\MDOS
FCBS=16,8
RMSIZE=640
DEVICE=C:\OS2\MDOS\VEMM.SYS
DOS=LOW,NOUMB
DEVICE=C:\OS2\MDOS\VXMS.SYS /UMB
DEVICE=C:\OS2\MDOS\VDPMI.SYS
DEVICE=C:\OS2\MDOS\VDPX.SYS
DEVICE=C:\OS2\MDOS\VWIN.SYS
DEVICE=C:\OS2\MDOS\VW32S.SYS
........... ..... ......... ........ - .. .. ......... ............. ........
........ ...... ........ . ..... ...... .... ... ............. ..........
........... .......... . .. ...... ....... .......... .. .. .. .... .......
.........
.............. .......... ..... ......... ....... . ini-...... .. Windows
X.XX (........ 3.11) .. .... ........ ....... ........... ...... .........
............... ........ . ............. ....... .. ........ ........ ...
.. .... .......... "... ......"-"... .........", ... ....... ........ ...
...... .. ..... SYSTEM.INI ... WIN-OS2 ......:
[keyboard]
subtype=
type=4
keyboard.dll=kbdru.dll
oemansi.bin=xlat866.bin
typeofswitch=2
secondkeyb.dll=kbdusx.dll
[boot.description]
keyboard.typ=Enhanced 101 or 102 key US and Non US keyboards
mouse.drv=Microsoft, or IBM PS/2
network.drv=No Network Installed
language.dll=Russian
system.drv=MS-DOS System
codepage=866
woafont.fon=Russian (866)
. ........... ..... ...... ..... ....... .............. ................
... ...... . .......... ...... ....... . ...... ..... ...... . ..........
........... ......, ... ...... ....... .... .. ... .............. .......
........ ......., ... ... ..... ... ... ..... ........... .........., ..
... .......... .. ..... ............ .......... .... .......... .
........., . .... .............. .............. .............
..... ....... ........, ... ....... . ..... ..... .... .. .....,
.... ........ .......... .... . ............, .. ..... .....
......... ..... . ........ .... ........-.......... ..... registry ..
Windows9X . ....., . ..... ini-..... . OS/2. ........ .. ....... .. ..............
......... . .... .. ............. ....... ......... - ... .............
........... ......... ......... (........ .... ...........) . .........
....... ....... ...... .... .. .... ........ ........ ........ ..........
...., ... .. ...........
... ....... ............ .......... ......... ....... (. OS/2 .. ..........
. WINPRF.DLL) .......... ........ .......... . .......... ...... ............
.......
... .......... ....., ......., ..... .........., ..... ...........
...... ... ........... ............. .........
.........-......... ... ..........
........ ... ......... ......... ........ . .... ... ......... ...............
......... ......... ......... ....... ......... . ........, .... .. ......
.......... .. ...... .............
.. ........ ...... .... ........ ......... .......... ........... ........
- .......... .......... ............, .......... ..... . .. ......... .
............. ......, ........ ......... ........ ........... .. ......
........ (..... .......... .... .. ......) . .... . ....
........ ........ ...... .... ........... ...... .............. .........
...... ......... .......... ........... .......... ... .............. .....
........ . ....... .. ..........
......... ........ ...... . .... .. ............ ..... ...........
.. ...... ........., ... ...... .... ........... ........ .. ...... ........
. ....... . .... . .... .......
...... ........... ........ .......... ............ .........., .......
...... .... .............. ........ ... ...... . ....... . ........ .....
... .......... ........ .. ..... ........ ....... ............. .........
..... ..... ........... .......:
- WPS-........ ....... .......... ....... ........ (........ ............,
........ . ......);
- WPS-........ ... ......... ....... .... ............... ..... (........
........ ............, . ...... . ......... ... ........);
- ............ ...... ........... .. ........ .......... ...... . ........
. .... ........... ......... . ......-.........
......... ........ ...... ....... ...... .. ..... ............. .........
........... .......... ........ . ....... ......... .. ..., ..., ...........,
..... .........
... .......... .........., ... ...... .........-............ ......,
... ........ ... .....-.. ......... ... ........ . .. .... .. .... .. ..........
.... ......... ........ .. ......... . ........, .. ...... .......,
...... .............. ........ ............. Profile API ... .............
....... .............
... ... ........ ... .. ............ ......... .......... . .........
................:
- ... ........ ...... ............ ...... ...... ..... ........... . ..........
(.. ......);
- ... ........ ........... . ........ (........... ............. ...... .
......... ......) ..... ............ ...... ..... ... ........., ... .
........ ............., ... .. ...... ...... .. ...... .. .............;
- ............ .... ...... ......... ...... ...... ............. ... ..........
"...... ......" . .........;
- ............ .... ...... .... ........;
- ............ ...... ........... ....... .......... . ...... .......
... .......... . .... ........... . ............ .......... ...... . .......
............. ... .......... ........., .......... ....... ........, WPS-......
............ . ......, . ..... API ... ...... . ...... .. ...........
............ ........:
..... .... ............ ............... ... ..... ..... ......... ......
.... ..... .... ........ . ........... ..... ....... ... .... ............
........ ........ ....... .......... .... (......).
............ ......... ........ ........ ......., ....... .........
......... ......., .......... . .............
........ ............ .....-.. ... . C++ : \xx, \\,\n,\t, etc, . .....
........... ........ %.
........... ............ .......... ........ //, /*,*/ . ....... ..
............. .......... .++.
....... ......... .......... .........:
.............. |
transient |
....... .. ...... ... ........ .. .........; ..... .... ....... . ......
............. |
....... .... ...... |
int
double
string
group
|
..... (4 .....)
............ (8 ....)
...... ........ (.. ........... .............. \0)
...... ............ ........ - ......... ...... .. ...... ........
|
....... .... ...... ... ............ . ...... |
IntField
DoubleField
StringField
TextField
RadioToggleField
CheckBoxField
ComboTogleField
ReferenceField
PasswordField |
..... .............. . ........... int
..... .............. . ........... double
..... .............. . ........... string
..... .............. . ........... .......... .... (textarea)
..... ...... . ....... . ....... RadioButton
..... ...... . ....... . ....... CheckBox
..... ...... .. ...... . ....... . ....... ComboBox
.....-...... - . ....... ............. . ....... drag&drop
..... ... ..... . ........ ......, ............... .. GOST 21847-89 |
......... ... |
ObjectListField |
..... .......... ......... ......... ............. .... |
|
namedgroup |
....... .. .... group, ............ ... ........ ....... . ...... |
..... ......... .. ........ . ............ ......... :
IntField = . string title = "" // ........ ......... ... ...... . .............. . ....... int value = 0 // ........ .... int min = 0 // .............. . ....... .......... ........ ...... value int max = 0 // .............. . ....... ............ ........ ...... value int delta = 0 // ... ............. ... .............. . ....... .
DoubleField = . string title = "" // ........ ......... ... ...... . .............. . ....... double value = 0 // ........ .... double min = 0 // .............. . ....... .......... ........ ............. value double max = 0 // .............. . ....... ............ ........ ............. value double coef = 0 // ........... ........ (... ...... .............. . ..... ........ // ........., . ............. . ......) double delta = 0 // ... ............. ... .............. . ....... int decimals = 0 // .......... ......... ... ...... . .............. ...... // ..... .......... ..... .
StringField = . int max = 0 // ............ .......... ........ . ...... string title = "" // ........ ......... ... ...... . .............. . ....... string value = "" // .... ...... .......... .......... ......... '...' ............ ...... // (\0 .. ........) .
TextField = . // .......... StringField, .. ............ ..... textarea (MLE) int max = 0 string title = "" string value = "" .
RadioToggleField = . // ........ ....... .... .. .... - .......... ........... ........ string title = "" int value = 0 // ........ ..... ......... ...... group elements = . . // ..... ..... .... string .
CheckBoxField = . // ........ ....... .... .. .... - .......... ........... ........ string title = "" int value = 0 // ........ 1 .... ....... ...... .
ComboToggleField = . // .......... ........... ... ....... ComboBox string title = "" int value = 0 group elements = . . .
..... ReferenceField ......... ............ ......... ........ . .....,
...., ........, ........... ....... ....... .. ......... ....., ......
.. ....... ..... .... ......... . .............. . ..... ......, .
........, .... ......... ...... ....... ............ .. .........
.......
ReferenceField = . // ......-...... .. ...... ....... . ....... ......... drag&drop
string title = ""
string class = "" // ... ...... ....... ........ ..... ......... ...... ....
// (.. ..... .... ..... - class0|ckass1|...|classN)
string value = "" // ... ...... ..... ........... ......
int value2 = 0 // WPS-objectid
.
..... ObjectListField ......... ......... ...... ......... ........,
...., ........, ...... .......... . ...... ... ...... ......... ....... .......... ................. ...... ............
ObjectListField list = . // ...... ...... ........ ReferenceField ......... ......
transient string title = ""
transient group factory = .
ReferenceField rs = .
transient string title = ""
transient group menu = .
"......."
"........"
.
transient string class = ""
string value = ''
int value2 = 0
.
.
transient group buttons = .
"........"
"......."
.
group elements = .
.
.
... ...... ....... ObjectListField . ...... .........
........ ........ string title ........ ........, ...., ........
........ name|value, .... . ........ .......... .......
...... ....... StringField name.
...... . ......, ......... . PasswordField, ............ .............. .......:
rc=getPasswordFieldValue(*XObject,password,sizeof(password));
. ........ ..... ............. (... ........ ........... .....), ..........
..... ...... .......:
ColorMaskField = .
string title = ""
int fcolor = 0 // .... ......... .....
int bcolor = 0 // .... .... int width = 16 // ...... . ...... int height = 16 // ...... . ...... string value = '' // ..... ....... 8*8
.
..... ..... ........, ... .......... . ................. ......:
- title - .. ......... ..... ......-........ ........, ....... ............
. ....... . ... ......;
- status - ... ...... ...... SUBTITLE ........ .......
- value - .. ......... ..... ........ ........;
- elements - ............ ... ........ ....... . ......;
- pages - ......... ........ .......;
- sections - ......... ...... ...... ........
.. ...... .... ....... . ....... ..... ..... ......... .... ....... ...... .........
..., ........, ........
.....-........ ......... .........:
DEngine drill=.
string title="........ ........."
DoubleField diam_zd =. title="....... ............." coef=0.001 decimals=1 delta=0.1 min=30 max=400.
DoubleField leng_zd =. title="..... ............." coef=1 decimals=2 delta=0.01 max=50.
DoubleField q_zd =. title="...... ............." coef=1000 decimals=1 delta=0.1 min=30 max=400.
DoubleField dens_zd =. title="......... ........" coef=1000 decimals=2 delta=0.01 min=0.8 max=2.5.
DoubleField loss_px_zd =. title="...... ........ .. ........ ...." coef=98100 min=1 max=200.
DoubleField freq_nx_zd =. title="....... ........ .. ........ ...." coef=0.01666 min=10 max=999.
DoubleField loss_pt_zd =. title="...... ........ ... .........." coef=98100 min=1 max=200.
DoubleField moment_t_zd=. title="......... ......" coef=10 min=1 max=1500.
ComboToggleField drop =.
string title ="... ........."
group elements = .
string = "........ . .......... ......"
string = "........ . ........ ......"
string = "........ ........."
.
.
.
. ... ........ ........ ........... ......... ......... (/* ...........
*/ . ...... ...... ......... ... ............. ...... ... XObject):
/* XObject */
DEngine = .
diam_zd = .value = 30.0000.
leng_zd = .value = 0.0000.
q_zd = .value = 30.0000.
dens_zd = .value = 0.8000.
loss_px_zd = .value = 1.0000.
freq_nx_zd = .value = 10.0000.
loss_pt_zd = .value = 1.0000.
moment_t_zd = .value = 1.0000.
drop = .value = 0.
.
...... ......... .......... ........... ......... . ...... .......... .......
. ............... .....: min, max . .......
... .......... ..... ...... - ".... ..... ...... ... ........ . ........!"
......... . .......... ................ . ..................., ...
............ . .......
......, ... .......... ....., WPS-...... ................ ..........
.............. ..... ........ ....... ... ........ ..... ....... (property).
... ..... . ........ ...... ........ ........... ........ - group .
....... pages ( ... .......) . sections (... ......).
... ... ........ ........... ...... ..... ...... :
group pages = .
namedgroup = . // ........ ........ .......
title = "%MajorTab" // ...... % ........ MajorTab elements = .
string = "... 1" // ....... ......
string = "... 2"
...
string = "... N"
.
.
namedgroup = . // ...... ........ .......
title = "MinorTab ........"
elements = .
string = "... 1"
string = "... 2"
...
string = "... N"
.
.
... // ...... ........ .......
.
... ... ........ (. ... .........) ..... ........ ...... ......... .........
(DEngine) ........... . .......:
DEngine drill=.
...
group pages = .
namedgroup = .
string title = "%........ ........."
group elements = .
string string = "drop"
string string = "diam_zd"
string string = "leng_zd"
string string = "q_zd"
string string = "dens_zd"
string string = "loss_px_zd"
string string = "freq_nx_zd"
string string = "loss_pt_zd"
string string = "moment_t_zd"
.
.
.
.
|
|
........ ........ .. ...... ........ - .... ... ......... ...... .
....
........... .... ...... ..... ....... . ....... ...... ..........
(........./........).
......... ......... ..... .......... ...... ..... .... ....... .
.......
.......... .......... . ........, ..... ...... ..... .... ...... .
........
........., . ..... ........ . ........ ..... . ...... ........ .
........ ...., ...... ......... .... ....... .. ........ .........
......... ........ ...... ........ .. ........., ....... ......
......... ..... XObject ........... ...... ...........
... ........ ...... ....... ............ .......... .............. group
sections . ..., ... .......... ... ......:
DEngine drill=.
...
group sections=.
namedgroup=.
title = "........ ........."
elements=.
string ="drop"
string ="diam_zd"
string ="leng_zd"
string ="q_zd"
string ="dens_zd"
string ="loss_px_zd"
string ="freq_nx_zd"
string ="loss_pt_zd"
string ="moment_t_zd"
.
.
.
.
|
|
...... ....... ............ .... .. ... .... .... ....... .............
... ..... .. ..... (......) .........
.... ........ ...... ...... ...... ........ ... .. ......, ... ReferenceField
...... ........, ... ...... ..... ......... ...:
... ... ... ............:
... ............. ............ ....... ...... . .............. ..........
. ..... ... ........ ......... .......... ......... AMT_PATH ....... ....
config.ini .......... .......... (.. ....... .........):
/* AMT */
group Config = .
string customer = "... ..."
int loglevel = 0 // -1 ...... .......... ..... . .... \xobject.log
// 0 ........ ...... ......... .........
// 1 ........ .............. .......... .. .......
group classes = .
string = "classes.ini" // ........ ..... ....... (...........)
string = "common.ini" // ........ ...... ...... ..... .......
string = "DSTclass.ini" // ........ ....... ........ .........
string = "KRSclass.ini" // ........ ....... ......... ... ............ ....... .......
.
.
.... .... ............ WPS-........ AMTWPSXObject ........... ....... .
...... ........ .............
.... ...... ............ . ........... AMT.
. ......... .. .......... ......... LIBPATH ....... ........... ...
............ .......... ........ XObject . ........ ........... .
....... .......... ....... .. Rexx:
/*********************************************************************/
/* XObject registration utility*/
/*********************************************************************/
Call RxFuncAdd 'SysLoadFuncs', 'REXXUTIL', 'SysLoadFuncs'
Call SysLoadFuncs
Say 'AMT XObjects to be registered'
rc=SysRegisterObjectClass('AMTWpsObject', 'amtwpso')
if rc then say 'AMTWpsObject registered'
else say 'AMTWpsObject cannot be registered'
................ . ....... API XObject:
... ................ .......
...... ......... ........ ............ ....... - ........ .... config.ini
. ... ............. . ... ..... ... ...... ...... ................ .....
.... ...... .......... .... ......... ....... ......... . config.ini:
#include "common.h"
XObject *o_config; // ... ........
// ....... .............. .......... ................. ....... XObject
// . .......... ...-.. ....... . ...........
int InitXClasses(void)
.
char buf[256]="", *str;
char *amtPath = getenv(AMT_PATH);
int num=0;
XOBJECT_INITIALIZE
// ........ ......... .......
buf[0] = 0;
if (amtPath) strcat(buf, amtPath);
strcat(buf, "\\");
strcat(buf, AMT_CONFIG);
o_config = XObject::loadObject(buf);
if (!o_config)
return 1;
o_config = o_config->getGroupElement("classes");
for (int i = 0; igetGroupSize(); i++ )
.
str = o_config->getGroupElement(i)->getStringValue();
if (str)
.
buf[0] = 0;
if (amtPath)
strcat(buf, amtPath);
strcat(buf, "\\");
strcat(buf, str);
num += XObject::loadClasses(buf);
.
.
return num;
.
C........ ...... .... ............. . ......... ........ ......... .........
...... ........ ... .........:
.
...
o_main=XObject::loadObject(file_name); // ........ ..... ........... ........ if (!o_main) return 1; // ...... ...... ........ - ....... . ......... ......
...
o_sub = o_main->getGroupElement("title");
Name=strdup(o_sub->getStringValue());
o_sub = o_main->getGroupElement("model_type");
model_type=o_sub->getIntValue(); // ... (.....) ...... ....... .........
o_sub = o_main->getGroupElement2("mode|value"); // ..... ............ ......... ...
mode=o_sub->getIntValue(); // ... (.....) ...... ....... .........
// .... ....... ........ ......., ..... ............... ....... GetValue(name),
// ....... ... . ........ ...... ......
o_ref=o_main->getValue("derrik"); // ......... ........ ....... .....
// ... ..... .......
// o_ref=XObject::loadObject(o_main->getGroupElement2("derrik|value")->getStringValue();
// ......... ........ ......... g_kv . ....... ..
g_kv=o_ref->getGroupElement2("g_kv|value")->getDoubleValue() * o_ref->getGroupElement2("g_kv|coef")->getDoubleValue();
.
... ... ...... ...... .............
...... . ......... ............ (..........) .....
............ .. ...... ..... ...... (name), .. ......... ...... ("name|subname"),
. ..... .. .. .......... ....... . group. . ........... .... ........
......... ......... ........ ......... ..... .......
.. ..... <%1|value>, .... diam_zd ..... .......... ..... .... . .......
...... XObject ......... ..... . ......... .
... .......... .......... ........... ... .... ........ ...........
............, ...... . ................ ..............
... .................. ........ ........ public ........ ...... XObject
class _Export XObject . public: static void setLogLevel(int); static int log(char*, ...); static int log(int, char*, ...); static int logObject(XObject*, char* = NULL); static void logClasses();
static void initClass(); static void unInitClass(); static int loadFile(char*, char**, int*); static int saveFile(char*, char*, int); static XObject* getInstance(char*, char*, int = FLAGS_NORMAL, int =-1); static XObject* getInstanceText(char*, int*, int =-1); static XObject* getInstanceBin(char*, int*, int = -1); static int loadClasses(char*); static XObject* loadObject(char*); static int saveObject(char*, XObject*); ... public: static int getClassNum(); static char* getClassName(int); ... public: virtual ~XObject(); int isVoid(); int isInteger(); int isDouble(); int isString(); int isComplex(); int isGroup(); int isObject(); int isObject(char*); int isBasic();
virtual XObject* clone(); int initFrom(XObject*);
char* getName(); int setName(char* n); char* getClassName(); int getClassVersion();
int getFlags(); int setFlags(int); void flagSet(int); void flagClear(int); int flagIsSet(int);
int getSizeBin(); int getSizeText();
int getIntValue(); int setIntValue(int);
double getDoubleValue(); int setDoubleValue(double);
char* getStringValue(); int getStringSize(); int getStringLength(); int setStringSize(int); int setStringValue(int, char*); int setStringValue(char*);
int getGroupSize(); XObject* getGroupElement(int); XObject* getGroupElement(char*); XObject* getGroupElement2(char*); int addGroupElement(XObject*); int removeGroupElement(int); int removeGroup();
int loadBinFile(char*); int readText(char*, int); int readBin(char*, int); int writeBin(char*, int); int writeText(char*, int, int = 0);
virtual XObject* getValue(); virtual int show(int); virtual int print(int); virtual int html(int); // misc static char* strPrintInteger(char*, int, int); static char* strPrintDouble(char*, double, int, int); static char* strPrintString(char*, char*, int, int*); static char* strPrintStringEsc(char*, char*, int, int*); ... .;
.... ... ........... ......... ...., .. ...... ....... ........
... ............ ......
.... .. ...... ......... ... ...... .......... . .......,
...... ....: Joseph Shrago -- e:mail : LFer at rambler dot ru
Comments: ....... 2010-10-04 17:17:30 | . ..... ... ... ............. .. Rexx'..?!
... .... ... .... .. ..... ........ | joseph 2010-10-06 18:31:39 | .. ...... .......... ............. ...... ... . ...... ..... ..... ....
.......... .. ..... ....... ......... .... . ........... xob . ..... ........ - ........... .
name_of_class=.. ..... .... .. ......... ... Xobject.
.... .... .... . rexx2xobject API .. ..... ....... .. ...... ............ ..... ....? | .......: 2010-10-12 23:52:03 | joseph: . ....... ......... ........... ...... .... . ............ .... .. ... .... ........ ..... ..... ........... ...... ... ...... ........ ............ ........... ........... ..... .. .. ...... .............. | Joseph 2010-10-14 15:50:44 | ......., ..... ....... ....... - ...... ....... . ......... Xobject . ........ . .... rxXobject.dll ............ ...... ....... ... ...... | ....... 2010-10-15 15:24:35 | Joseph: ...... Dll .. ......? :))) .. . .. ...., ....... ...... ..... 8 ... ....., ... ... .... .. ........ .. ... . ..... ........?
Rexx .......... ...., . ...... ........ . .... :), . ... ... 6 .... ...... .. .... ..... .... rexx ........ ............ ............. ... ............. ....... ... ....... .......... ..2 ... ....... . ..... .... ......... ........ . ..... (.... ........... .........), . .. ....... ... ......... ....... ...... .... ......... . ...... .. 100%, ... ... .. ... ..... ........ . . ........ .. ... ..... .... .......... ..........
. ... ......... .... ............., ....... ...... ...... . ...... ...... ................. :( ... .... ...... ... .......... .. ...... . ....... ......... . .... .. rexx ... ... ... ...... .. ... dll'.. . ... ........ .. ....... . .... ... ........ ... .. ....... .. .. ........., ....... . ... ..... . ....... ... ......, ... .......... .. ..... .... (... ....... ........).
....... ........ ........ ............., ............ ........... ........ ..... . . eCS. . ...... .... ........ .. ........ ........ ..........., . ........ Rexx'... ..... ..... ........ ... rexx - ... ....... ....... os2 (eCS). ... ... . ....! .. . ......... ..... ... ......... ..... ........, ... Rexx ...-.. ......... . ...... ....... ...... ... .............
.. .... .......... . ..........., . .... . ...... ........... .... .......... ... ....... ....... ..... ..., .. .. ... ........ ......, ....... ........ ...... ........ .. .......... ...... .......... OS2 (eCS) . Rexx'.... .......... .. ........... ........ ....... ... . ............ .. .... ....-........ ....... ........ ...... ........ OS2, Rexx ..... .... .. ........ ...... ...... ... .... ........ .............. ....... (......: ......... ......... Mesa) . .... ........... ......... ..... ......... . ........... .. .......... ..... . rexx'... _........._ ............ . ... ....... ....... . ......... ...... ... ........... ........ .... ........ . ... ... ....... ........ ......... ..... ............ . . ........ :( ... . ...... ....... ........, ......... ........ . ......... ............ (..... . .. ........).
.... ......., ... ...... ... ...... ..... ....... | Joseph 2010-12-24 21:20:40 | ....... REXX API ... XObject | Joseph 2011-03-15 17:55:35 | .......... . XObject .............. ..... ......... ..... ...... ........ .. ..... ...... (... ......), .. . .. ..... ....... ...... ....... ......... ... .... . Warpin. |
Comment this article.
|
The development of software for eComStation is profitable: a) system API is effective and considered. b) The market is not so infinite as Windows. All eCS users know about your product. c) Every developer is influencing on the OS significantly. |
|
|