半半半半半 发表于 2016-9-6 17:26:19

实现 mmo1向mmo2 每秒复制一个文字 终于解决了数组问题~~~

本帖最后由 半半半半半 于 2016-9-6 17:27 编辑

实现mmo1向mmo2 每秒复制一个文字暂不支持中文(如果把copy 变量改为2可支持中文)不支持中文英文混输入

经验总结在结尾

代码如下:



// 两个memo 控件 一个time控件 四个button
// 已改name 属性

unit Unit1;

interface

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

type
TForm1 = class(TForm)
    pnl1: TPanel;
    mmo1: TMemo;
    mmo2: TMemo;
    btn1: TButton;
    btn2: TButton;
    btn3: TButton;
    btn4: TButton;
    tmr1: TTimer;
    procedure tmr1Timer(Sender: TObject);
    procedure btn1Click(Sender: TObject);
    procedure btn2Click(Sender: TObject);
    procedure btn4Click(Sender: TObject);
    procedure btn3Click(Sender: TObject);
private
    { Private declarations }
public
    { Public declarations }
end;

var
Form1: TForm1;
nnum : array of string ;
i : Integer ;
j : BOOL = True ;

implementation

{$R *.dfm}

procedure TForm1.tmr1Timer(Sender: TObject);
begin
//载入判断机制,限制i 的长度 否则 运行到最后报错
if j then
begin
    if i < Length(mmo1.Lines.Text) then
    begin
      mmo2.Lines.Text := mmo2.Lines.Text+ nnum ;
      i := i +1 ;
    end
    else
    tmr1.Enabled := False ;
end ;


end;

procedure TForm1.btn1Click(Sender: TObject);
begin          // 数组赋值 time 控件开始执行
iftmr1.Enabled = Truethen
    MessageBox(Handle, '正在运行,请暂停或停止!', '提示' , MB_OK)
else
    ifmmo1.Lines.Text= ''then
   MessageBox(Handle ,'请在左框内输入字符!', '提示' , MB_OK)
    else
    begin
      btn2.Caption:= '暂停执行';
      SetLength(nnum, Length(mmo1.Lines.Text)) ;
      tmr1.Enabled:= True ;
      for i := 1 to Length(mmo1.Lines.Text) do
      nnum:= Copy(mmo1.Lines.Text , i , 1 );
    end;
i := 0;
end;

procedure TForm1.btn2Click(Sender: TObject);
begin      // 可暂停程序
    if tmr1.Enabled= True then
      begin
      btn2.Caption:= '暂停执行';
      tmr1.Enabled := False ;
      end
    else
      begin
      btn2.Caption:= '继续执行';
      tmr1.Enabled := True;
      end ;


end;

procedure TForm1.btn4Click(Sender: TObject);
begin
Form1.Close;
end;

procedure TForm1.btn3Click(Sender: TObject);
begin         //恢复原始状态
tmr1.Enabled:= False;
j := False;
for i := 1 to Length(nnum) do
    nnum:= '';
mmo1.Text:= '';
mmo2.Text:= '';

end;

end.

数组问题纠结了好几天时间对数组赋值一直报错
终于在今天下午想出问题所在

1、动态数组下标从0开始要先对数组的首个值赋值就是 nnum所以用到了 nnum
2、在数组赋值前 必须先对数组界定大小不然就报错~~~

暂时总结这两点感觉总结的有问题有没有高手指点一下
是不是可以不用从0开始赋值   或者 不用提前给数组界定大小可以在运行当中对数组赋值???
页: [1]
查看完整版本: 实现 mmo1向mmo2 每秒复制一个文字 终于解决了数组问题~~~