00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #include "CommonToResourceFilesEx.h"
00029
00030 #include "ReadData.h"
00031 #include <readdata.rsg>
00032
00033
00034
00035 CResData* CResData::NewLC(TResourceReader& aReader)
00036 {
00037 CResData* self=new (ELeave) CResData;
00038 CleanupStack::PushL(self);
00039 self->ConstructL(aReader);
00040 return self;
00041 }
00042
00043
00044
00045
00046
00047
00048
00049 void CResData::ConstructL(TResourceReader& aReader)
00050 {
00051
00052 iWrd = aReader.ReadInt16();
00053
00054
00055 iFlags = aReader.ReadInt16();
00056
00057
00058 iLng = aReader.ReadInt32();
00059
00060 iTxt = aReader.ReadTPtrC();
00061
00062
00063
00064 iLtxt = aReader.ReadHBufC16L();
00065
00066 iByt = aReader.ReadInt8();
00067
00068
00069 iDbl = aReader.ReadReal64();
00070
00071 }
00072
00073
00074
00075
00076 CResData::~CResData()
00077 {
00078 if (iLtxt)
00079 delete iLtxt;
00080 }
00081
00082
00083
00084
00085 void CResData::ShowData(const TInt aStructNum)
00086 {
00087 _LIT(KResourceItems,"Resource items (struct #%d):\n");
00088 _LIT(KResourceItems2,"Resource items:\n");
00089 _LIT(KWrdFormat,"wrd = %d\n");
00090 _LIT(KFlags,"flags = ");
00091 _LIT(KEFlagItem,"EFlagItem");
00092 _LIT(KNewline,"\n");
00093 _LIT(KLngFormat,"lng = %d\n");
00094 _LIT(KBytFormat,"byt = %d\n");
00095 _LIT(KDblFormat,"dbl = %S\n");
00096 _LIT(KTxtFormat,"txt = %S\n");
00097 _LIT(KLtxtFormat,"ltxt = %S\n");
00098
00099 TBuf<16> temp;
00100 TRealFormat format(16,2);
00101
00102 if (aStructNum)
00103 console->Printf(KResourceItems,
00104 aStructNum
00105 );
00106 else
00107 console->Printf(KResourceItems2);
00108
00109
00110 console->Printf(KWrdFormat,iWrd);
00111
00112
00113 _LIT(KLtxt,"ltxt = \n");
00114 console->Printf(KFlags);
00115 TUint mask = 1;
00116 TBuf<256> temp2;
00117 for (TInt ii = 0 ; ii < 16; ii++)
00118 {
00119 if (iFlags & mask)
00120 {
00121 temp2.Append(KEFlagItem);
00122 temp2.AppendNum(ii+1);
00123 temp2.Append('+');
00124 }
00125 mask <<= 1;
00126 }
00127 if (temp2.Length())
00128 temp2.SetLength(temp2.Length()-1);
00129 console->Printf(temp2);
00130 console->Printf(KNewline);
00131
00132
00133 console->Printf(KLngFormat,iLng);
00134
00135 console->Printf(KTxtFormat,&iTxt);
00136
00137
00138 if (iLtxt)
00139 console->Printf(KLtxtFormat,iLtxt);
00140 else
00141 console->Printf(KLtxt);
00142
00143 console->Printf(KBytFormat,iByt);
00144
00145
00146 temp.Num(iDbl,format);
00147 console->Printf(KDblFormat,&temp);
00148
00149 }
00152
00153
00154
00155 LOCAL_C void doExampleL()
00156 {
00157
00158 RResourceFile resourceFile;
00159
00160
00161
00162 #if defined(__WINS__)
00163 _LIT(KZSystemDataRsc,"Z:\\Resource\\Apps\\ReadData.rsc");
00164 resourceFile.OpenL(fsSession, KZSystemDataRsc);
00165 #endif
00166
00167
00168
00169 #if defined(__EPOC32__)
00170 _LIT(KCSystemDataRsc,"Z:\\Resource\\Apps\\ReadData.rsc");
00171 resourceFile.OpenL(fsSession, KCSystemDataRsc);
00172 #endif
00173
00174
00175 HBufC8* res = resourceFile.AllocReadLC(FIRST);
00176
00177 TResourceReader theReader;
00178 theReader.SetBuffer(res);
00179
00180
00181
00182 CResData* resData = CResData::NewLC(theReader);
00183
00184
00185 CleanupStack::Pop();
00186
00187
00188 CleanupStack::PopAndDestroy();
00189
00190
00191 resData->ShowData();
00192
00193
00194 delete resData;
00195
00196
00197 resourceFile.Close();
00198 }
00199
00200