|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 半半半半半 于 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 := i +1 ;
- end
- else
- tmr1.Enabled := False ;
- end ;
- end;
- procedure TForm1.btn1Click(Sender: TObject);
- begin // 数组赋值 time 控件开始执行
- if tmr1.Enabled = True then
- MessageBox(Handle, '正在运行,请暂停或停止!', '提示' , MB_OK)
- else
- if mmo1.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[i-1]:= 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[i-1]:= '';
- mmo1.Text:= '';
- mmo2.Text:= '';
- end;
- end.
复制代码
数组问题纠结了好几天时间 对数组赋值一直报错
终于在今天下午想出问题所在
1、动态数组下标从0开始 要先对数组的首个值赋值 就是 nnum[0] 所以用到了 nnum[i-1]
2、在数组赋值前 必须先对数组界定大小 不然就报错~~~
暂时总结这两点 感觉总结的有问题 有没有高手指点一下
是不是可以不用从0开始赋值 或者 不用提前给数组界定大小 可以在运行当中对数组赋值??? |
|