CRACK.CPP
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:7k
源码类别:

Windows编程

开发平台:

Visual C++

  1. // crack.cpp
  2. //
  3. // This is a part of the Microsoft Foundation Classes C++ library.
  4. // Copyright (C) 1992-1998 Microsoft Corporation
  5. // All rights reserved.
  6. //
  7. // This source code is only intended as a supplement to the
  8. // Microsoft Foundation Classes Reference and related
  9. // electronic documentation provided with the library.
  10. // See these sources for detailed information regarding the
  11. // Microsoft Foundation Classes product.
  12. #include "stdafx.h"
  13. #include "crack.h"
  14. LPCTSTR CCrack::strFieldType(short sType)
  15. {
  16. switch(sType){
  17. case (dbBoolean):
  18. return _T("Bool");
  19. case (dbByte):
  20. return _T("Byte");
  21. case (dbInteger):
  22. return _T("Integer");
  23. case (dbLong):
  24. return _T("Long");
  25. case (dbCurrency):
  26. return _T("Currency");
  27. case (dbSingle):
  28. return _T("Single");
  29. case (dbDouble):
  30. return _T("Double");
  31. case (dbDate):
  32. return _T("Date");
  33. case (dbText):
  34. return _T("Text");
  35. case (dbLongBinary):
  36. return _T("Long Binary");
  37. case (dbMemo):
  38. return _T("Memo");
  39. case (dbGUID):
  40. return _T("GUID");
  41. }
  42. return _T("Unknown");
  43. }
  44. LPCTSTR CCrack::strQueryDefType(short sType)
  45. {
  46. switch(sType){
  47. case (dbQSelect):
  48. return _T("Select");
  49. case (dbQAction):
  50. return _T("Action");
  51. case (dbQCrosstab):
  52. return _T("Crosstab");
  53. case (dbQDelete):
  54. return _T("Delete");
  55. case (dbQUpdate):
  56. return _T("Update");
  57. case (dbQAppend):
  58. return _T("Append");
  59. case (dbQMakeTable):
  60. return _T("MakeTable");
  61. case (dbQDDL):
  62. return _T("DDL");
  63. case (dbQSQLPassThrough):
  64. return _T("SQLPassThrough");
  65. case (dbQSetOperation):
  66. return _T("Set Operation");
  67. case (dbQSPTBulk):
  68. return _T("SPTBulk");
  69. }
  70. return _T("Unknown");
  71. }
  72. LPCTSTR CCrack::strBOOL(BOOL bFlag)
  73. {
  74. return bFlag ? _T("TRUE") : _T("FALSE");
  75. }
  76. CString CCrack::strVARIANT(const COleVariant& var)
  77. {
  78. CString strRet;
  79. strRet = _T("Fish");
  80. switch(var.vt){
  81. case VT_EMPTY:
  82. case VT_NULL:
  83. strRet = _T("NULL");
  84. break;
  85. case VT_I2:
  86. strRet.Format(_T("%hd"),V_I2(&var));
  87. break;
  88. case VT_I4:
  89. strRet.Format(_T("%d"),V_I4(&var));
  90. break;
  91. case VT_R4:
  92. strRet.Format(_T("%e"),(double)V_R4(&var));
  93. break;
  94. case VT_R8:
  95. strRet.Format(_T("%e"),V_R8(&var));
  96. break;
  97. case VT_CY:
  98. strRet = COleCurrency(var).Format();
  99. break;
  100. case VT_DATE:
  101. strRet = COleDateTime(var).Format(_T("%m %d %y"));
  102. break;
  103. case VT_BSTR:
  104. strRet = V_BSTRT(&var);
  105. break;
  106. case VT_DISPATCH:
  107. strRet = _T("VT_DISPATCH");
  108. break;
  109. case VT_ERROR:
  110. strRet = _T("VT_ERROR");
  111. break;
  112. case VT_BOOL:
  113. return strBOOL(V_BOOL(&var));
  114. case VT_VARIANT:
  115. strRet = _T("VT_VARIANT");
  116. break;
  117. case VT_UNKNOWN:
  118. strRet = _T("VT_UNKNOWN");
  119. break;
  120. case VT_I1:
  121. strRet = _T("VT_I1");
  122. break;
  123. case VT_UI1:
  124. strRet.Format(_T("0x%02hX"),(unsigned short)V_UI1(&var));
  125. break;
  126. case VT_UI2:
  127. strRet = _T("VT_UI2");
  128. break;
  129. case VT_UI4:
  130. strRet = _T("VT_UI4");
  131. break;
  132. case VT_I8:
  133. strRet = _T("VT_I8");
  134. break;
  135. case VT_UI8:
  136. strRet = _T("VT_UI8");
  137. break;
  138. case VT_INT:
  139. strRet = _T("VT_INT");
  140. break;
  141. case VT_UINT:
  142. strRet = _T("VT_UINT");
  143. break;
  144. case VT_VOID:
  145. strRet = _T("VT_VOID");
  146. break;
  147. case VT_HRESULT:
  148. strRet = _T("VT_HRESULT");
  149. break;
  150. case VT_PTR:
  151. strRet = _T("VT_PTR");
  152. break;
  153. case VT_SAFEARRAY:
  154. strRet = _T("VT_SAFEARRAY");
  155. break;
  156. case VT_CARRAY:
  157. strRet = _T("VT_CARRAY");
  158. break;
  159. case VT_USERDEFINED:
  160. strRet = _T("VT_USERDEFINED");
  161. break;
  162. case VT_LPSTR:
  163. strRet = _T("VT_LPSTR");
  164. break;
  165. case VT_LPWSTR:
  166. strRet = _T("VT_LPWSTR");
  167. break;
  168. case VT_FILETIME:
  169. strRet = _T("VT_FILETIME");
  170. break;
  171. case VT_BLOB:
  172. strRet = _T("VT_BLOB");
  173. break;
  174. case VT_STREAM:
  175. strRet = _T("VT_STREAM");
  176. break;
  177. case VT_STORAGE:
  178. strRet = _T("VT_STORAGE");
  179. break;
  180. case VT_STREAMED_OBJECT:
  181. strRet = _T("VT_STREAMED_OBJECT");
  182. break;
  183. case VT_STORED_OBJECT:
  184. strRet = _T("VT_STORED_OBJECT");
  185. break;
  186. case VT_BLOB_OBJECT:
  187. strRet = _T("VT_BLOB_OBJECT");
  188. break;
  189. case VT_CF:
  190. strRet = _T("VT_CF");
  191. break;
  192. case VT_CLSID:
  193. strRet = _T("VT_CLSID");
  194. break;
  195. }
  196. WORD vt = var.vt;
  197. if(vt & VT_ARRAY){
  198. vt = vt & ~VT_ARRAY;
  199. strRet = _T("Array of ");
  200. }
  201. if(vt & VT_BYREF){
  202. vt = vt & ~VT_BYREF;
  203. strRet += _T("Pointer to ");
  204. }
  205. if(vt != var.vt){
  206. switch(vt){
  207. case VT_EMPTY:
  208. strRet += _T("VT_EMPTY");
  209. break;
  210. case VT_NULL:
  211. strRet += _T("VT_NULL");
  212. break;
  213. case VT_I2:
  214. strRet += _T("VT_I2");
  215. break;
  216. case VT_I4:
  217. strRet += _T("VT_I4");
  218. break;
  219. case VT_R4:
  220. strRet += _T("VT_R4");
  221. break;
  222. case VT_R8:
  223. strRet += _T("VT_R8");
  224. break;
  225. case VT_CY:
  226. strRet += _T("VT_CY");
  227. break;
  228. case VT_DATE:
  229. strRet += _T("VT_DATE");
  230. break;
  231. case VT_BSTR:
  232. strRet += _T("VT_BSTR");
  233. break;
  234. case VT_DISPATCH:
  235. strRet += _T("VT_DISPATCH");
  236. break;
  237. case VT_ERROR:
  238. strRet += _T("VT_ERROR");
  239. break;
  240. case VT_BOOL:
  241. strRet += _T("VT_BOOL");
  242. break;
  243. case VT_VARIANT:
  244. strRet += _T("VT_VARIANT");
  245. break;
  246. case VT_UNKNOWN:
  247. strRet += _T("VT_UNKNOWN");
  248. break;
  249. case VT_I1:
  250. strRet += _T("VT_I1");
  251. break;
  252. case VT_UI1:
  253. strRet += _T("VT_UI1");
  254. break;
  255. case VT_UI2:
  256. strRet += _T("VT_UI2");
  257. break;
  258. case VT_UI4:
  259. strRet += _T("VT_UI4");
  260. break;
  261. case VT_I8:
  262. strRet += _T("VT_I8");
  263. break;
  264. case VT_UI8:
  265. strRet += _T("VT_UI8");
  266. break;
  267. case VT_INT:
  268. strRet += _T("VT_INT");
  269. break;
  270. case VT_UINT:
  271. strRet += _T("VT_UINT");
  272. break;
  273. case VT_VOID:
  274. strRet += _T("VT_VOID");
  275. break;
  276. case VT_HRESULT:
  277. strRet += _T("VT_HRESULT");
  278. break;
  279. case VT_PTR:
  280. strRet += _T("VT_PTR");
  281. break;
  282. case VT_SAFEARRAY:
  283. strRet += _T("VT_SAFEARRAY");
  284. break;
  285. case VT_CARRAY:
  286. strRet += _T("VT_CARRAY");
  287. break;
  288. case VT_USERDEFINED:
  289. strRet += _T("VT_USERDEFINED");
  290. break;
  291. case VT_LPSTR:
  292. strRet += _T("VT_LPSTR");
  293. break;
  294. case VT_LPWSTR:
  295. strRet += _T("VT_LPWSTR");
  296. break;
  297. case VT_FILETIME:
  298. strRet += _T("VT_FILETIME");
  299. break;
  300. case VT_BLOB:
  301. strRet += _T("VT_BLOB");
  302. break;
  303. case VT_STREAM:
  304. strRet += _T("VT_STREAM");
  305. break;
  306. case VT_STORAGE:
  307. strRet += _T("VT_STORAGE");
  308. break;
  309. case VT_STREAMED_OBJECT:
  310. strRet += _T("VT_STREAMED_OBJECT");
  311. break;
  312. case VT_STORED_OBJECT:
  313. strRet += _T("VT_STORED_OBJECT");
  314. break;
  315. case VT_BLOB_OBJECT:
  316. strRet += _T("VT_BLOB_OBJECT");
  317. break;
  318. case VT_CF:
  319. strRet += _T("VT_CF");
  320. break;
  321. case VT_CLSID:
  322. strRet += _T("VT_CLSID");
  323. break;
  324. }
  325. }
  326. return strRet;
  327. }