رضاانزلي
14-05-2009, 11:19
سلام
من بكمك سورسهاي ارائه شده در پستهاي شما نرم افزار اعلام كد ملي را بهينه تر وقابل اجرا نمودم البته ميخوام خود برنامه را به اشتراك بزارم ولي چون تازه وارد به P30هستم اجازه ندارم
اميد آن دارم پذيرفته شوم .
اميدوارم سورس ارائه شده بتونه كمكي كنه
1-4تاedit box بزاريد با نام edit1,edit2,l1,l2
2-1دونه ام buttom
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Buttons;
type
TForm1 = class(TForm)
Button1: TButton;
edit1: TLabeledEdit;
edit2: TLabeledEdit;
BitBtn1: TBitBtn;
l1: TLabeledEdit;
l2: TLabeledEdit;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var Sum,i : Integer;
flag : Boolean;
code : string;
begin //1
{ barrasi sehat avalieh cod meli}
if edit1.Text ='' then edit1.Text :='0';
code := edit1.Text;
flag := (Code = '0000000000') or (code = '1111111111') or (code = '2222222222') or (code = '3333333333');
flag := (Code = '4444444444') or (code = '5555555555') or (code = '6666666666') or (code = '7777777777') or flag;
flag := (Code = '8888888888') or (code = '9999999999') or flag;
l1.Text := Code[10];
if not flag then
begin //2
l1.Text := Code[10];
if (Length(Code) < 10) then
BEGIN
edit2.Text:= 'ßÏ ÕÍíÍ äãí ÈÇÔÏ';
EDIT1.SetFocus;
END;
if (Code = '') then
BEGIN
edit2.Text:='ßÏ ÕÍíÍ äãí ÈÇÔÏ';
EDIT1.SetFocus;
END;
if Length(Code) = 10 then
begin //3
Sum := 0;
for i:= 1 to 9 do
Sum := Sum + (StrToInt(Code[i])*(11-i));
Sum := Sum mod 11;
if Sum < 2 then
l2.Text :=Code[10];
if Sum >= 2 then
l2.Text :=inttostr((11 - Sum)) // := (StrToInt(Code[10]) = Sum)
end;
end ; //2
if (strtoint(l1.Text) = strtoint(l2.Text)) then
edit2.Text:='ßÏ ãáí ÕÍíÍ ãí ÈÇÔÏ'
else
edit2.Text:='ßÏ ÕÍíÍ äãí ÈÇÔÏ';
edit1.SetFocus;
end; //1
procedure TForm1.FormActivate(Sender: TObject);
begin
edit1.SetFocus;
end;
end.
من بكمك سورسهاي ارائه شده در پستهاي شما نرم افزار اعلام كد ملي را بهينه تر وقابل اجرا نمودم البته ميخوام خود برنامه را به اشتراك بزارم ولي چون تازه وارد به P30هستم اجازه ندارم
اميد آن دارم پذيرفته شوم .
اميدوارم سورس ارائه شده بتونه كمكي كنه
1-4تاedit box بزاريد با نام edit1,edit2,l1,l2
2-1دونه ام buttom
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Buttons;
type
TForm1 = class(TForm)
Button1: TButton;
edit1: TLabeledEdit;
edit2: TLabeledEdit;
BitBtn1: TBitBtn;
l1: TLabeledEdit;
l2: TLabeledEdit;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var Sum,i : Integer;
flag : Boolean;
code : string;
begin //1
{ barrasi sehat avalieh cod meli}
if edit1.Text ='' then edit1.Text :='0';
code := edit1.Text;
flag := (Code = '0000000000') or (code = '1111111111') or (code = '2222222222') or (code = '3333333333');
flag := (Code = '4444444444') or (code = '5555555555') or (code = '6666666666') or (code = '7777777777') or flag;
flag := (Code = '8888888888') or (code = '9999999999') or flag;
l1.Text := Code[10];
if not flag then
begin //2
l1.Text := Code[10];
if (Length(Code) < 10) then
BEGIN
edit2.Text:= 'ßÏ ÕÍíÍ äãí ÈÇÔÏ';
EDIT1.SetFocus;
END;
if (Code = '') then
BEGIN
edit2.Text:='ßÏ ÕÍíÍ äãí ÈÇÔÏ';
EDIT1.SetFocus;
END;
if Length(Code) = 10 then
begin //3
Sum := 0;
for i:= 1 to 9 do
Sum := Sum + (StrToInt(Code[i])*(11-i));
Sum := Sum mod 11;
if Sum < 2 then
l2.Text :=Code[10];
if Sum >= 2 then
l2.Text :=inttostr((11 - Sum)) // := (StrToInt(Code[10]) = Sum)
end;
end ; //2
if (strtoint(l1.Text) = strtoint(l2.Text)) then
edit2.Text:='ßÏ ãáí ÕÍíÍ ãí ÈÇÔÏ'
else
edit2.Text:='ßÏ ÕÍíÍ äãí ÈÇÔÏ';
edit1.SetFocus;
end; //1
procedure TForm1.FormActivate(Sender: TObject);
begin
edit1.SetFocus;
end;
end.