对一个MEMO中的字段处理
http://www.delphi2007.net/DelphiVCL/html/delphi_20061224223945142.html
有一个memo里内容如下:1,2,8,2,6,3,3,2,8,2,5,2,10,4,1,1,3,4,2,3,2,9,2,1,8,1,2,4,4,11,1,7
,6,5,6,1,1,1,2,2,6,4,2,1,6,1,5,6,2,1,1,2,4,4,2,3,2,6,1,3,2,8,1,1,4
,3,4,8,3,6,2,1,
现在想达到以下目的:
1、统计其中所出现的数字以及数字出现的次数;
2、相同数字连出的次数;比如上面的1:
1,2,1,1,1,3,1,1,2,1,2,1类似这样的;
该如何处理,高手求救!!!
1、统计其中所出现的数字以及数字出现的次数
//ButtonSum: TButton; 统计
//MemoSrc: TMemo; 源Memo
//MemoSum: TMemo; 显示统计信息用
procedure TForm1.ButtonSumClick(Sender: TObject);
var
Str , S : String;
SList : TStringList;
I , Sum : integer;
begin
Str := MemoSrc.Text;
SList := TStringList.Create;
SList.Text := StringReplace( Str, ',' , #10 , [rfReplaceAll] );
SList.Sort;
S := SList[0];
Sum := 1;
for I := 1 to SList.Count-1 do
if S <> SList[I] then
begin
memoSum.Lines.Add(S + ' : ' + IntToStr(Sum) +' 个');
S := SList[I];
Sum :=1;
end else Inc(Sum);
SList.Free;
end;
2、相同数字连出的次数
没弄明白。
不好意思,上面的代码里,在 SList.Free; 这句前面,还要加一句:
memoSum.Lines.Add(S + ' : ' + IntToStr(Sum) +' 个');
谢谢帅哥的支持,第二个问题的意思是这样的,在整个数字中有许多个1,2,3等,那么这些相同数字有时是连着出的,像1,1这样,现在就统计这些数字连出的次数,要是没有连,就是1,要是连了,连几次就是几次:1,2,8,2,6,3,3,2,8,2,5,2,10,4,1,1,3,4,2,3,2,9,2,1,8,1,2,4,4,11,1,7
,6,5,6,1,1,1,2,2,6,4,2,1,6,1,5,6,2,1,1,2,4,4,2,3,2,6,1,3,2,8,1,1,4
,3,4,8,3,6,2,1,
上面的1:第一次的1,是1,2,8..没有连,第二次和第三次出现的1就连了,4,1,1,3,第四次和第五、六次都没连,后面又连了3次,1,1,1,。所以这几次统计结果就是:1,2,1,1,1,3...如此类推
我们在刚学C语言的时候就经常做这样的算法,很简单
1、统计其中所出现的数字以及数字出现的次数;
定义一个2维integer动态数组, 其数组的长度为这串数字的最大值。
setlength(intArr,MaxValue); 这里好像是11,
所以就是 intarr[11,2],初始化所有的数组为一个默认值,这个默认值必须是memo中没有的数字!我们姑且初始化为0,1列可以不是,2列必须为0,这是用来计算个数的
然后遍历这些数字,
遍历之前对memo里的数字进行格式化,
加入另一个memo 或者定义一个Tstrings类型的变量
S:=TStrings.Create;
S.Delimiter:=',';
S.DelimitedText:=Memo.text;
....
S.Free; //最后执行
For I:=1 to S.count-2 do //减2是应为最后一个字符是,所以格式化之后最后一个元素是空!
begin
intArr[Strtoint(S.strings[I]),0]:=S.strings[I])
intArr[Strtoint(S.strings[I]),1]:=intArr[Strtoint(S.strings[I]),1]+1;
end;
2、相同数字连出的次数
这个统计则是另外的算法了,
对memo里的字符进行格式化,还是必须的
加入另一个memo 或者定义一个TstringList类型的变量
S:=TStringList.Create;
S.Delimiter:=',';
S.DelimitedText:=Memo.text;
S.short;//对其排序
定义一个数组保存统计结果:intArr[X,2], 数组的行数为元素的个数,也就是S的Count-2,最终是用不到这么多的,列分为2列, 1列保存元素,2列保存出现次数
定义一个字符串变量 Str:=''; //中转字符,用来查看相邻元素之间是否相同
定义一个integer变量 index:=0; //用来标示统计到哪个元素的下标!
For I:=0 to S.Count-2 do
begin
if Str=S.Strings[I] then
begin
intArr[Index,1]:=intArr[Index,1]+1;
end
else begin
index:=index+1;
Str:=S.strings[I];
intArr[Index,0]:=StrToInt(S.Strings[I]);
intArr[Index,1]:=0;
end;
end;
S.Free;
不好意思,第2个问题,不需要排序!
谢谢二位,我觉得lihuasoft(学习低调做人) 的方法比较好,简单一些,winxkm(蹩脚的程序员)的方法用到动态二维数组,比较麻烦,第二个问题我自己解决了,谢谢二位!!
转载于:https://www.cnblogs.com/delphi2007/archive/2008/09/16/1291746.html
对一个MEMO中的字段处理相关推荐
- 如何更新mysql数据库字段_如何使用MySQL一个表中的字段更新另一个表中字段
1,修改1列 update student s, city c set s.city_name = c.name where s.city_code = c.code; 2,修改多个列 update ...
- SQL多表查询和查询一个表中某字段值相同的数据
如何多表查询,比如A表(student)中有一个字段teacher_id,跟B表(teacher)中的id是相同的. 如果我想查询某个student的teacher,并且要求查询出来的结果包含stud ...
- 一个表中的字段值用作另一个表的In查询条件
Question表与Paper表 Paper表中字段QuestionIds存储的是Question表中字段Id的拼接后的值 如: 'f855eba1-b308-4bd7-a250-c071a0e1bd ...
- SQL查询一个表中类别字段中Max()最大值对应的记录
问题是: 数据库有一个表 code,里面有个点击量字段click_num和一个类别字段kind以及其它信息字段, 现在要搜出每个类别中点击量最大的那条记录,如果是10个类别,那么结果应该是10条记录, ...
- SQLSERVER如何获取一个数据库中的所有表的名称、一个表中所有字段的名称
1.查询数据库中的所有数据库名: 1 SELECT Name FROM Master..SysDatabases ORDER BY Name 2.查询某个数据库中所有的表名: 1 SELECT Nam ...
- linux查找一个文件中abc字段命令,Linux查询命令整理(示例代码)
在linux中,查找命令主要有find和grep,以及mlocate/locate 区别: (1)find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访问时间,修改时间 ...
- 查询一个表中某个字段最大值的集合
1.使用场景 需要找到最新版本的Resume信息,根据主键 2.所有信息在同一个表中查询出,创建子查询 <!-- 查询一组最新版本的简历信息 --><select id=" ...
- mysql把一个字段加到另一张表中_mysql如何能把一个表中的某一字段下的数据加入另一个表中相同字段下,条件是两表中的某字段相同?...
1.创建表 create table a (name varchar(20) not null,sex varchar(10)); create table b (name varchar(20) n ...
- 怎么获取一个类型的所有字段的名字 和获取给予数据相应的值
下面的代码你只要注意 怎么样获取字段名和相应数据的值就OK了其它的就不要管 View Code public FlexiGridData GetFlexiGridData<T>(Page ...
最新文章
- 单向链表JAVA代码
- 从神经元到神经网络、从神经网络到深度学习:神经网络、深度学习、神经元、神经元模型、感知机、感知机困境、深度网络
- 「 每日一练,快乐水题 」599. 两个列表的最小索引总和
- 递归回溯最简单易懂的小例子
- 蓝桥练习-算法训练 Collecting Luggage
- 企业的最佳选择?开放式混合云大行其道
- 【华为云实战开发】12.如何在云端快速开展Swagger接口测试
- 《HTML5 从入门到精通--7.6.3 单元格垂直跨度——rowspan》
- linux系统进入救援模式
- 四核八线程和八核八线程区别
- 2020计算机考试系统office,2020年3月计算机二级考试,大学生office考试教材,仿真考试系统...
- 将ppt的图保存成矢量图
- 基于腾讯地图实现精准定位,实现微信小程序考勤打卡功能
- 【QT】FillRect填充的区域实现部分区域透明
- ​关于百度网盘扩容的一点经验分享2022
- linux如何进入文件编辑,Linux 文件编辑工具
- [WTL/ATL]_[Gdiplus]_[绘制虚线并设置破折号空格的宽度]
- nacos启动报错 Unable to start embedded Tomcat 以及项目链接nacos报错 server is DOWN now, please try again later!
- 2020年美容师(中级)报名考试及美容师(中级)考试总结
- 训练集、验证集、测试集以及交叉验证
热门文章
- php计算器_,php计算器
- 落实“新基建”部署,坚持服务为本,推动新能源汽车充电桩建设
- 可以自由定制的游戏手柄,让操作更顺手,北通阿修罗3S上手
- LR(1)文法智能分析
- 计算机test的应用,memtest怎么用,教您如何使用MemTest检测内存
- Unity 3D 新手强烈推荐教程
- 将txt_path下的指定文件夹中的图片合在一起
- mongodb java 子查询_MongoDB 怎么计算子查询
- 【MySQL高级】MySQL 传输数据过大 max_allowed_packet 参数的设置
- mapboxGL之风流图