读书人

超奇怪的有关问题

发布时间: 2012-05-20 16:03:12 作者: rapoo

超奇怪的问题
下面函数,在独立一个简单的项目,一个FORM,运行完全正常,但把代码原封不动的加入到其它项目后,调用出错。
同一台电脑,同一版本,连传入的数据都是一样的。 出错的代码是 RANGE CHECK ERROR,出错的代码:myint=mlint xor 1
谁能解释得通?
function TForm1.getcardint(cardsn: string): integer;
var mlint: Cardinal;
myint: integer;
bi: int64;
begin
bi := strtoint64(cardsn);
if bi >= 2147483648 then
begin

mlint := bi;
myint :=mlint XOR 1;
myint := myint - 1;
end
else
myint := bi;
result := myint;
end;

[解决办法]
将这个
cardsn: string
修改成:
cardsn: pchar
试试吧
[解决办法]
DELPHI 7 ,到你的。下面是代:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,TestGetCardIntFrm, StdCtrls;

type
TTestForm = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
TestForm: TTestForm;

implementation

{$R *.dfm}

procedure TTestForm.Button1Click(Sender: TObject);
var
i:integer;
begin
i := Form1.getcardint('2147483649');
showmessage(IntToStr(i));
end;
end.

读书人网 >.NET

热点推荐