📄 main.pas
字号:
unit Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Memo1: TMemo;
Memo2: TMemo;
Memo3: TMemo;
BitBtn1: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
slExp1, slExp2, slResult: TStringList;
function MakeExp(ANum: string; ASl: TStringList): Boolean;
function Multil(ANum1, ANum2: string): string;
public
{ Public declarations }
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
constructor TForm1.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
slExp1 := TStringList.Create;
slExp2 := TStringList.Create;
slResult := TStringList.Create;
end;
destructor TForm1.Destroy;
begin
slExp1.Free;
slExp2.Free;
slResult.Free;
inherited;
end;
function TForm1.MakeExp(ANum: string; ASl: TStringList): Boolean;
var
i: integer;
begin
Result := False;
ASl.Clear;
for i := 1 to Length(ANum) do begin
if (not (ANum[i] in ['0'..'9'])) then Exit;
ASl.Add(ANum[i]);
end;
Result := True;
end;
function TForm1.Multil(ANum1, ANum2: string): string;
var
i, j, nNum, nTemp: integer;
slTmp: TStringList;
begin
Result := '';
if not (MakeExp(ANum1, slExp1) and MakeExp(ANum2, slExp2)) then Exit;
slTmp := TStringList.Create;
slResult.Clear;
//计算乘积
for i := slExp2.Count - 1 downto 0 do begin
for j := slExp1.Count - 1 downto 0 do begin
slResult.Add(IntToStr(StrToInt(slExp1.Strings[j]) * StrToInt(slExp2.Strings[i])));
end;
end;
//计算和
//总数是减1
slTmp.Add('0');
for nNum := 0 to slExp1.Count + slExp2.Count - 2 do begin
slTmp.Add('0');
nTemp := StrToInt(slTmp.Strings[nNum]);
//循环求和
for i := 0 to (slExp2.Count - 1) - 0 do begin
for j := 0 to (slExp1.Count - 1) - 0 do begin
if (j + i = nNum) then begin
nTemp := nTemp + StrToInt(slResult.Strings[(slExp1.Count) * (i) + j]);
end
else Continue;
end;
end;
slTmp.Strings[nNum] := IntToStr(nTemp mod 10);
slTmp.Strings[slTmp.Count - 1] := IntToStr(nTemp div 10);
end;
for i := slTmp.Count - 1 downto 0 do begin
Result := Result + slTmp.Strings[i];
end;
// Result := slTmp.Text;
slTmp.Free;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Memo3.Lines.Text := Multil(Trim(Memo1.Lines.Text), Trim(Memo2.Lines.Text));
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -