mysql数据库,有unsigned int字段,用做存储32位ip地址对应的整数值问题是delphi的TIntegerField是有符号32位整数,表中255.255.255.255对应的整数值应为2的32次方减1,结果读过来就是-1,请问大家有什么高招,

解决方案 »

  1.   

    SubString;
    StrToInt;
    然后计算就行了
      

  2.   

    用下列方法强制转换看看:
    Longword()
    Cardinal()
      

  3.   

    这些方法不行
    数据库中有一个UNSIGEND 32 位整数
    ADOQuery中生成的对应的字段为TIntegerField类型,是有符号整数下行程序想将字段更新为4294967295ADOQuery.Fieldbyname('a').asInteger:=4294967295;其实写进数据库时是-1,继续求助
      

  4.   

    用AsVariant可以吗?或者AsString := IntToStr(429....)?
      

  5.   

    使用Delphi 7 与 Sql Server 2000中文版测试通过,可以输入类似“4294967295123456”的数据,该字段类型bigint,8字节长。 赶紧发工资!!
    procedure TForm1.Button2Click(Sender: TObject);
    begin
      Edit1.Text := ADODataSet1.FieldByName('test').Value;
    end;procedure TForm1.Button3Click(Sender: TObject);
    var
      i64: int64;
      p:^int64;
    begin
      i64 := strtoint64(edit1.Text);
      new(p);
      try
        p^ := i64;
        with ADODataSet1 do
        begin
          Edit;
          FieldByName('test').SetData(p);
          UpdateRecord;
          Post;
        end;
      finally
        dispose(p);
      end;
    end;