关于TField.DataSize的坑
从其它平台迁移而来 在从数据库中查询数据时,有时需要事先取得字段内容的大小,再根据情况进行处理。 对于ADO之类返回TField类型的,可以使用DataSize属性,但是!!!这里有很深的坑!!!。 首先看如下代码: 1 2 3 4 if ADOQuery.FieldByName('Test').DataSize > 3 then {处理1} else {处理2}; 按预想,当Test字段里的数据超过3B时,应该执行处理1的代码,但事实上无论该内容长短,都是执行处理2的代码,WHY? 扒一下Delphi的源码就明白了。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 function TField....