Lazarus中文社区

 找回密码
 立即注册(注册审核可向QQ群索取)

QQ登录

只需一步,快速开始

Lazarus IDE and 组件 下载地址版权申明
查看: 3347|回复: 11

我想用lazarus做一个小程序完成一个不太复杂的任务,请帮我看看怎么实现

[复制链接]

该用户从未签到

发表于 2015-1-8 10:31:59 | 显示全部楼层 |阅读模式
我想用lazarus做一个小程序完成一个不太复杂的任务,请帮我看看怎么实现

事情是这样的,我有两堆文件,其中第一堆假设为a.txt,b.txt,c.txt,d.txt在一个文件夹里,第二堆假设为A.txt,B.txt,C.txt,D
.txt在另一个文件夹里,我把第一堆每个文件里某个位置的字符,比如.Number "J.15.0020000"这个字符中''"里的字符读出来去在第二堆文件的每一个文件里去找,看有没有,如果没有则把""里的字符记录下来分行保存在新的txt文件里。其中第一堆每一个文件里都有很多处.Number "****",只是""里的字符不一样,.Number "****"这个特征是在第一堆每个文件里都有的.请问在lazarus中free pascal的代码怎么写?谢谢。

回复

使用道具 举报

  • TA的每日心情
    开心
    2017-3-1 22:40
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2015-1-8 12:15:21 | 显示全部楼层
    如果有重复的怎么处理?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2015-1-8 14:20:11 | 显示全部楼层
    应该不是问题吧
    回复 支持 反对

    使用道具 举报

    该用户从未签到

     楼主| 发表于 2015-1-8 15:08:39 | 显示全部楼层
    clxer 发表于 2015-1-8 12:15
    如果有重复的怎么处理?

    重复的也没影响,其实就要要统计出第一堆文件里有而在第二堆所有文件里都里没有的number后面“”中的字符,谢谢
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2015-1-9 08:50:38 | 显示全部楼层
    [ 本帖最后由 fireyu 于 2015-1-9 09:04 编辑 ]\n\n[ 本帖最后由 fireyu 于 2015-1-9 08:56 编辑 ]\n\n[ 本帖最后由 fireyu 于 2015-1-9 08:52 编辑 ]\n\n结构体:
    type
      R_FILE = record
        NUMBER : INTEGER; //将NUMBER后的4个字符转换后生成NUMBER,用来在FIND时加快速度
        VALUE   : STRING;//NUMBER的实际内容
        ICOUNT : INTEGER;
        PREV : PR_FILE;
        NEXT : PR_FILE;
        FIRST: PR_FILE;
        FILE_NAME : STRING;
      end;
    PR_FILE = ^R_FILE;
    方法:
    PROCEDURE ADD(PN : PR_FILE);//添加节点
    function FIND(NUMBER  : INTEGER;FILE_NAME : String):PR_FILE; //快速查找节点
    function FIND(NUMBER  : INTEGER;VALUE : String;PSTART:PR_FILE):PR_FILE;//真实查找
    PROCEDURE DEL(PN : PR_FILE);//删除节点

    分析文件后,创建一个根节点指针PROOT : PR_FILE;
    创建变量指针PCUR;PTMP;
    分析文件后的逻辑处理顺序:
    1:插入数据前,先用FIND方法查询,如果查到,则ICOUNT+1;没查到则跳到2;
    2:根据顺序单向链表规则插入数据。插入数据时使用混合排序法插入。(先按文件名排序,再按NUMBER使用2分法排序);
    注意:上述结构体,将,数值NUMBER,出现的次数,前节点地址,后节点地址,根节点地址,文件名依次填写。
    3:文件关闭时释放所有堆中的内存。

    设计思路基本就这样。用单向链表即可解决
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2015-1-9 09:02:08 | 显示全部楼层
    最后
    将文件名1中
    ICOUNT>2的节点打印出来即可
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2015-1-9 09:04:15 | 显示全部楼层
    应该不复杂吧。。。

    对第一堆文件挨个处理——分别列出文件内容——用正则表达式,找出 .Number "J.15.0020000" 格式的所有字符串,
    循环处理这所有字符串,用每一个字符串在第二堆文件中,查找相同字符串——找到后记录到新文件
    回复 支持 反对

    使用道具 举报

    该用户从未签到

     楼主| 发表于 2015-1-9 09:30:00 | 显示全部楼层
    cuibq 发表于 2015-1-9 09:04
    应该不复杂吧。。。

    对第一堆文件挨个处理——分别列出文件内容——用正则表达式,找出 .Number "J.15.0 ...


    如果能在第二堆中能找到相同的则可不记录,主要是记录在第一堆中有的而在第二堆没有的字符。谢谢。我就是不会写代码啊,帮写出代码好不?谢谢
    回复 支持 反对

    使用道具 举报

    该用户从未签到

     楼主| 发表于 2015-1-9 09:37:56 | 显示全部楼层
    fireyu 发表于 2015-1-9 08:50
    [ 本帖最后由 fireyu 于 2015-1-9 09:04 编辑 ]\n\n[ 本帖最后由 fireyu 于 2015-1-9 08:56 编辑 ]\n\n[ 本 ...

    谢谢,但我目前的水平还是写不出具体的代码,我目前只会输出hello world
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2015-1-9 10:00:03 | 显示全部楼层
    呵呵。都是一步一步过来的。
    一个复杂的参考资料

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册(注册审核可向QQ群索取)

    x
    回复 支持 反对

    使用道具 举报

    *滑块验证:

    本版积分规则

    QQ|手机版|小黑屋|Lazarus中国|Lazarus中文社区 ( 鄂ICP备16006501号-1 )

    GMT+8, 2025-5-2 21:14 , Processed in 0.094934 second(s), 10 queries , Redis On.

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表