需求是检察校验位是否正确,74472078-0,但是执行时报错,请各位帮我看看。急用,在线等待。
解决方案 »
- 用vclskin控件后,双击窗体标题栏锁定了,高手进,在线急等之
- ClientDataSet1调存储过程遇到的问题!请各位大侠解决下哦
- 插入多条数据后Sql server"提示我 键列信息不足或不正确 更新影响过多行" 如何避免这种情况!出现后如何处理呢?
- 请问在网页里面的activex控件如何能控制该网页里面的脚本呢?
- 如何dbgrid的popupmenu不弹出来?
- 新手求delphi2010用相对路径连接sql2005数据库急求啊!谢谢各位高手!
- ★★★C代码<<=====>>Delphi代码?★★★
- 大家好,请问谁知道关于药店管理软件的网址,谢谢谢!
- delphi access violation at address
- 子窗口show的问题
- ★★★★★★本人打算辞去DELPHI小版[Wwin32 SDK/API]|[DateBase]的版主一职,希望获得批准!★★★★★★
- 怎么用tdatabase控件联结桌面数据库,桌面数据库支持事务操作吗?
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, ExtCtrls;type
TForm1 = class(TForm)
Panel1: TPanel;
Splitter1: TSplitter;
BitBtn1: TBitBtn;
Button1: TButton;
Memo1: TMemo;
Memo2: TMemo;
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}
procedure TForm1.BitBtn1Click(Sender: TObject);
var
Wi : array[0..7] of Integer;
Ci : array[0..7] of Integer;
S1,x,K : string;
I,J,C9: Integer;
sum : Integer;
begin
Wi[0] := 3;
Wi[1] := 7;
Wi[2] := 9;
Wi[3] := 10;
Wi[4] := 5;
Wi[5] := 8;
Wi[6] := 4;
Wi[7] := 2;
for I := 0 to Memo1.Lines.Count - 1 do
begin
sum := 0;
S1 := Memo1.Lines[I];
K := S1[10];
for J := 0 to 7 do
begin
Ci[J] := StrtoInt(S1[J + 1]);
sum := sum + Ci[J]*(Wi[J]);
end;
C9 := 11 - (sum)mod 11;
if C9 = 10 then C9 := strtoint(x)
else if C9 = 11 then C9 := 0;
if K <> inttostr(C9) then
Memo2.Lines.Add(S1);
end;
end;end.
但 if C9 = 10 then C9 := strtoint(x) 中 x 沒有附值啊!!
居然敢这样访问,sl也不初始化就能这样访问吗????晕
这句中好象x没有预先设定值,如果DELPHI中假定为空字串,则转换时可能就是0值,那与后面的if语名就完全一样了。
二是楼上说的,X没有赋值;
三是MEMO1中不能有空行;
四是MEMO1中每行字符数不能小于10;
for J := 0 to 7 do
begin
Ci[J] := StrtoInt(S1[J + 1]);
sum := sum + Ci[J]*(Wi[J]);
end;
我觉得可能是类型转换上的错,不知道怎么改。
x没有值,改为try
if C9 = 10 then C9 := strtoint(x)
except
end;看还出错不
begin
Ci[J] := StrtoInt(S1[J + 1]);
sum := sum + Ci[J]*(Wi[J]);
end;
这个循环执行以后,sum值应该是比较大的,那么(sum)mod 11的结果就不应该是0或1,不知道我说的对不对。
另外你所说的执行时出错,不知道错误是什么?
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, ExtCtrls;type
TForm1 = class(TForm)
Panel1: TPanel;
Splitter1: TSplitter;
BitBtn1: TBitBtn;
Button1: TButton;
Memo1: TMemo;
Memo2: TMemo;
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}
procedure TForm1.BitBtn1Click(Sender: TObject);
const y : char = 'x';
var
Wi : array[0..7] of Integer;
Ci : array[0..7] of Integer;
S1 : string;
I,C9,J,K: Integer;
sum : Integer;
begin
Wi[0] := 3;
Wi[1] := 7;
Wi[2] := 9;
Wi[3] := 10;
Wi[4] := 5;
Wi[5] := 8;
Wi[6] := 4;
Wi[7] := 2;
for I := 0 to Memo1.Lines.Count - 1 do
begin
sum := 0;
S1 := Memo1.Lines[I];
K := strtoint(S1[10]);
for J := 0 to 7 do
begin
Ci[J] := StrtoInt(S1[J]);
sum := sum + Ci[J]*(Wi[J]);
end;
C9 := 11 - (sum)mod 11;
try
if C9 = 10 then C9 := strtoint(y)
else if C9 = 11 then C9 := 0;
except
end;
if K <> C9 then
Memo2.Lines.Add(S1);
end;
end;end.
但还是不行,说有EconvertEdrror 错误。