a/b/c/e/f
a/e/f
a/b/x
a/b/x/w
a/b/x/m
b/x/e/m
a/v/x

完整代码:
unit Unit1;

interface

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

type
  PN = ^TN;
  TN = record
    level: integer;
    Sname: String;
    Pname: String;
  end;

type
  TForm1 = class(TForm)
    TreeView1: TTreeView;
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
    FN : PN;
    FN1 : PN;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  i,j,k: integer;
  s,s1: TStringList;
  ls: TList;
  Node1,Node2: TTreeNode;
  ifadd: boolean;
begin
  s := TStringList.Create;
  s1 := TStringList.Create;
  ls := Tlist.Create;
  try
    s.LoadFromFile('c:/aa.txt');
    for i:=0 to s.Count-1 do
    begin
      s1.Delimiter := '/';
      s1.DelimitedText := s[i];
      for j:=0 to s1.Count-1 do
      begin
        //memo1.Lines.Add(s1[j]);
        new(FN);
        FN.level := j;
        FN.Sname := s1[j];
        if j>0 then
          FN.Pname := s1[j-1]
        else
          FN.Pname := '';
        ls.Add(FN);
      end;
      //memo1.Lines.Add('---------------------');
    end;
    //现在开始加载数据到treeview中
    for i:=0 to ls.Count-1 do
    begin
      new(FN);
      FN := ls[i];
      ifadd := true;
      if (FN.level=0) or (FN.Pname='') then
      begin
        if TreeView1.Items.Count<=0 then
        begin
          TreeView1.Items.AddChild(nil,FN.Sname);
        end else
        begin
          for j:=0 to TreeView1.Items.Count-1 do
          begin
            if (FN.level = 0) and (FN.Sname=TreeView1.Items[j].text) then break;
            Node2 := TreeView1.Items.AddChild(nil,FN.Sname);
            Node2.Data := FN;
          end;
        end;
      end else
      begin
        for j:=0 to TreeView1.Items.Count-1 do
        begin
          Node1 := TreeView1.Items[j];
          if FN.level = TreeView1.Items[j].Level+1 then
          begin
            if FN.Pname = TreeView1.Items[j].Text then
            begin
              //开始取其子节点
              if TreeView1.Items[j].Count>0 then
              begin
                for k:= 0 to TreeView1.Items[j].Count-1 do
                begin
                  Node2 := TreeView1.Items[j].Item[k];
                  FN1 := Node2.Data;
                  if FN1.Sname=FN.Sname then
                  begin
                    ifadd := false;
                    break;
                  end;
                end;
                if ifadd then
                begin
                  Node2 := TreeView1.Items.AddChild(Node1,FN.Sname);
                  Node2.Data := FN;
                end;
              end else
              begin
                Node2 := TreeView1.Items.AddChild(Node1,FN.Sname);
                Node2.Data := FN;
                break;
              end;
            end;
          end;
        end;
      end;
    end;
  finally
    s.Free;
    s1.Free;
    ls.Free;
  end;
end;

end.

没有用递归,写了一个文本转成树的小程序,代码凑和看吧相关推荐

  1. C语言时间管理小程序,写了一个时间管理的微信小程序

    原标题:写了一个时间管理的微信小程序 前言 以前看过<把时间当作朋友>这本书,里面有个管理时间的观点个人觉得很有用,就是养成记录自己每天的时间消耗的一个习惯,这样有助于更有效地管理自己的时 ...

  2. 使用python完成的一个烟花小程序-厉害了,我用Python写了一个自动回复拜年信息的小程序!...

    大年三十到年初一,有没有也被拜年短信(大部分是群发)搞得很焦虑?不回复似乎显得很没有礼貌,一一回复又累心劳神.一位大神程序员今年就用python拯救了自己的新年假期.这里分享这位社区博主happycc ...

  3. java 移动图片_Java写的一个简单的图片移动小程序

    前两天,有一个小姑娘让帮忙给其写一个小玩意,就是在Panel上绘制一个图片,然后通过键盘的方向键进行控制移动.虽然比较简单,这里还是希望和大家分享一下,里面有两点特别需要注意的知识点,这里一并加以说明 ...

  4. java qq聊天界面_【附源码】用Java写了一个类QQ界面聊天小项目,可在线聊天!...

    原标题:[附源码]用Java写了一个类QQ界面聊天小项目,可在线聊天! 目录: 1.功能实现 2.模块划分 3.使用到知识 4.部分代码实现 5.运行例图 1.功能实现 1.修改功能(密码.昵称.个性 ...

  5. 我写的一个给time_t赋值的小函数

    我写的一个给time_t赋值的小函数 //======================================== // 功能:将固定格式的时间转化为 time_t 日历时间 //       ...

  6. python自动填写小程序表单_新年好!教大家用Python写一个自动回复拜年信息的小程序!...

    原标题:新年好!教大家用Python写一个自动回复拜年信息的小程序! 过年期间,想必大家都收到很多拜年信息吧!有没有也被拜年短信(大部分是群发)搞得很焦虑?不回复似乎显得很没有礼貌,一一回复又累心劳神 ...

  7. 写了一个svg七巧板拼图的小东西

    写了一个svg七巧板拼图的小东西,可以拖动移动,改变颜色边框,旋转角度,然后保存图片. 保存图片用到的html2canvas.js和canvg.js,canvg用来将svg转换成canvas,html ...

  8. python网络监控程序_python写的一个监控系统进程网络流量的程序

    python写的一个监控系统进程网络流量的程序,python2.7版本. 代码如下: import socket import struct import thread import threadin ...

  9. 【lvgl游戏开发】用lvgl写了一个数字对拼图益智小游戏

    文章目录 游戏说明 实现原理 演示效果 实现代码 游戏说明 单击方格用于显示数字.匹配两个数字,方格将显示从而显示图像. 实现原理 // TODO 演示效果 [lvgl游戏开发]用lvgl写了一个数字 ...

  10. python入门学习之小工具制作系列--02使用tkinter库写一个BMI身体指数检测小程序

    一.小程序检测功能逻辑 即通过输入身高.体重两个数据即可计算自己的BMI身体指数是多少,且对身体状况做相应提醒. 二.小程序使用体验 1,弹出主界面,输入身高,体重数据~ 2,点击计算,输出BMI数据 ...

最新文章

  1. Linux rsync目录同步功能实现
  2. 在Java SE中使用Hibernate处理数据
  3. android 自动休眠时间设置在哪里,Android休眠设置时间
  4. NLPIR语义挖掘建互联网内容处理全技术链条
  5. CentOS7 升级 Git 版本
  6. linux 国内 NTP时间服务器地址
  7. 学习笔记-----C++模板类中友元函数重载输出运算符时提示无法解析的外部符号解决方案
  8. ASP.NET MVC3数据绑定到VIEW的方式
  9. 作者:包阳(1978-),男,北京系统工程研究所副研究员。
  10. 收藏 eclipse 最常用的10个快捷键
  11. pandownload软件下载
  12. python库--tensorflow--数学函数
  13. [UWP]了解模板化控件(6):使用附加属性
  14. poj 1035 Spell checker【字符串】
  15. 一天入门Tableau详细教程(上)
  16. Python创建网站
  17. 双均线策略 ------优矿学习
  18. 对英雄联盟比赛预测(三)- 数据获取Java实现
  19. 【Golang第6章:排序和查找】golang怎么排序,golang的顺序查找和二分查找,go语言中顺序查找二分查找介绍和案例
  20. asp.net MVC三层结构代码生成器

热门文章

  1. uWSGI, Gunicorn,ngnix 服务器 详解
  2. 【诊断数据库文件-CDD】创建速成班-北汇信息小课堂(二)
  3. vue封装常用工具类
  4. Oracle中的sys用户和system用户
  5. java 分卷压缩_Java:分卷压缩和解压缩请选择Zip4j
  6. 扫雷php,扫雷php
  7. RACK为TCP BBR提供动力源
  8. 25岁,上帝找你谈一次灵魂。——送给女孩,也送给男孩
  9. AI Arena:Paradigm领投的NFT AI竞技场
  10. RecyclerView吸顶效果