[DataBase][Dbase]字符串里含#0就插不进去?(100分)

  • 主题发起人 曹晓钢
  • 开始时间

曹晓钢

Unregistered / Unconfirmed
GUEST, unregistred user!
如下:

MacStr:=genMac(xxx); //生成mac校验值,每个字符都在#0-#255之间;

....
InsertMac.parambyname(':MAC').asstring:=MacStr;
InsertMac.execsql;

其中InsertMac.sql
Insert Into SomeTable
Values(...,:mac)

结果发现,如果MacStr形如 #234#123#0#233#21#43#12#23,
就只算前两个字符.
原因也不难理解,#0被认为是结束符了.

事实上,pascal内部的string中容许出现这样的字符串,
有没有办法让dbase能插入这样的字符串呢?

我用table.insert也一样.换了表的声明是DbaseIV,dbase for windows,
visual dBase也一样.

 
我刚刚试了一下,Paradox也不能用#0的串。看来原因只有一个
BDE和dBase, Foxpro一样,全是C语言写的,这样就没有什么
法子了。
不同老兄可以定义一个转义序列,如'/0'代表#0,'//'代表'/',
在取出数据后恢复原来的语义。
 
后来...我利用了另一个字段.

mac是从好几个不同的字段计算的来的,所以我用:


Serial:=0;
repeat
table.fieldbyname('Serial').asstring:=format('%0.5d',[serial]);
tempMac:=GenMac(table);
inc(serial);
until NoZeroExists(tempmac);
table.fieldbyname('mac').asstring:=tempMac;
只好这样了.
delphi,送你100分好不好?

 

Similar threads

I
回复
0
查看
530
import
I
I
回复
0
查看
547
import
I
I
回复
0
查看
760
import
I
I
回复
0
查看
714
import
I
顶部