free pascal 调用 C#程序读 Freeplane.mm文件,生成测试用例.csv文件

C# 请参阅:C# 用 System.Xml 读 Freeplane.mm文件,生成测试用例.csv文件

Freeplane 是一款基于 Java 的开源软件,继承 Freemind 的思维导图工具软件,它扩展了知识管理功能,在 Freemind 上增加了一些额外的功能,比如数学公式、节点属性面板等。

打开 lazarus-IDE,创建 project: xml2csv , 编辑GUI界面,编写 unit1.pas  如下

unit Unit1;{$mode objfpc}{$H+}interfaceusesClasses, SysUtils, Forms, Controls, Graphics, Dialogs,StdCtrls, Crt, laz2_DOM, laz2_XMLRead; // ShellApi,type{ TForm1 }TForm1 = class(TForm)Button1: TButton;Button2: TButton;Edit1: TEdit;Memo1: TMemo;OpenDialog1: TOpenDialog;procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject);privatepublicend;varForm1: TForm1;fn1: String;fn2: String;xmlDoc: TXMLDocument;sList: TStringList;implementation{$R *.lfm}{ TForm1 }procedure TForm1.Button1Click(Sender: TObject);// Local function that outputs a node attributes as a stringfunction GetNodeAttribute(pNode: TDOMNode; attr: string):string;var i: integer;beginResult:='';if pNode.HasAttributes thenfor i := 0 to pNode.Attributes.Length -1 dowith pNode.Attributes[i] doif NodeName = attr thenResult := format('%s', [NodeValue]);// Remove leading and trailing spacesResult:=Trim(Result);end;// Recursive function to process a node and all its child nodesprocedure ParseXML(Node:TDOMNode);var str: string;begin// Exit procedure if no more nodes to processif Node = nil then Exit;// Add a node 'TEXT' attributes to StringListstr := GetNodeAttribute(Node, 'TEXT');if str <>'' then sList.Add(str);// Process all child nodesNode := Node.FirstChild;while Node <> Nil dobeginParseXML(Node);Node := Node.NextSibling;end;end;beginif OpenDialog1.Execute thenbeginfn1 := OpenDialog1.FileName;Edit1.Clear;Edit1.Text := fn1;end;if FileExists(fn1) thenbegin//Memo1.Lines.LoadFromFile(fn1);trysList := TStringList.Create;ReadXMLFile(xmlDoc, fn1);Memo1.Lines.Clear;ParseXML(xmlDoc.DocumentElement);Memo1.Lines.Add(sList.Text);finallyxmlDoc.Free;sList.Free;end;endelseShowMessage(AnsiToUTF8(fn1+' 文件没找到'));end;procedure TForm1.Button2Click(Sender: TObject);
beginfn1 := Edit1.Text;if FileExists(fn1) thenbegin// Simple one-liner (ignoring error returns) ://if ShellExecute(0,nil, PChar('mm_Xml_csv.exe'),PChar(fn1),nil,1) =0 then;SysUtils.ExecuteProcess('mm_Xml_csv.exe', Utf8ToAnsi(fn1), []);delay(100);endelseShowMessage(AnsiToUTF8(fn1+' 文件没找到'));fn2 := fn1 +'.csv';if FileExists(fn2) thenbeginMemo1.Lines.LoadFromFile(fn2);end;
end;end.

copy mm_Xml_csv.exe to projects\xml2csv\  点击运行。

注意有中文文件名,需用 SysUtils.ExecuteProcess('mm_Xml_csv.exe', Utf8ToAnsi(fn1), []);

参阅:Executing External Programs

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/538014.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机界先锋:Figure 01实现全面沟通与AGI通用人工智能的征途

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

Python小设计

1. 五个PPT上的界面打印【print、input函数】 &#xff08;1&#xff09;英雄商城登陆界面 print(英雄联盟商城登录界面 ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~1. 用户登录2. 新用户注册3. 退出系统 ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~…

每一位教师都应该学会的“夸夸术”

在教育领域&#xff0c;我们常常强调正面教育和激励教育的重要性。这其中&#xff0c;教师们的“夸夸术”——也就是赞美和表扬学生的技巧——无疑是极为关键的一环。掌握并运用好“夸夸术”&#xff0c;不仅可以激发学生的学习兴趣和自信心&#xff0c;还能培养他们积极向上的…

使用大型语言模型进行实体提取

原文地址&#xff1a;Using A Large Language Model For Entity Extraction LLM 能否比传统 NLP 方法更好地提取实体&#xff1f; 2022 年 7 月 12 日 Large Language Models for Generative Information Extraction: A Survey 实体简介 使用Co:here大型语言模型。 实体可以被视…

java中的String

public class HelloWorld {public static void main(String[] args) {String s1 new String("hello") new String("world");s1.intern();String s2 "helloworld";System.out.println(s1s2);} } jdk1.6输出&#xff1a;false jdk1.8输出为&a…

程序员找副业有哪几个方向(纯干货)

前序 关于副业对于我自己的看法一般会先从自身的职业去拓展&#xff0c;毕竟自己所在的行业自己会更清楚有哪些资源去获取&#xff0c;那么首先我们可以先问万能的gpt我们程序员做副业有哪些实用的推荐&#xff0c;看看它怎么说的。 外包网站接单&#xff1f; 每次大家提到程…

【李沐论文精读】GPT、GPT-2和GPT-3论文精读

论文&#xff1a; GPT&#xff1a;Improving Language Understanding by Generative Pre-Training GTP-2&#xff1a;Language Models are Unsupervised Multitask Learners GPT-3&#xff1a;Language Models are Few-Shot Learners 参考&#xff1a;GPT、GPT-2、GPT-3论文精读…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:XComponent)

可用于EGL/OpenGLES和媒体数据写入&#xff0c;并显示在XComponent组件。 说明&#xff1a; 该组件从API Version 8 开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 构造参数type为"surface"时不支持。 从API version …

C#调用Halcon出现尝试读取或写入受保护的内存,这通常指示其他内存已损坏。System.AccessViolationException

一、现象 在C#中调用Halcon&#xff0c;出现异常提示&#xff1a;尝试读取或写入受保护的内存,这通常指示其他内存已损坏。System.AccessViolationException 二、原因 多个线程同时访问Halcon中的某个公共变量&#xff0c;导致程序报错 三、测试 3.1 Halcon代码 其中tsp_width…

雍禾植发再获好评!雍禾医疗获“年度医疗大健康消费企业”奖项

头皮健康不仅仅关乎着人民的身体健康&#xff0c;更与大家的仪容仪表息息相关。近年来&#xff0c;植发的性质发生了一定变化。过去&#xff0c;植发的健康功能更强&#xff0c;不少人出于“防脱”的观念选择植发。如今&#xff0c;植发的美学属性逐渐赶超其健康功能&#xff0…

力扣每日一题 最大二进制奇数 模拟 贪心

Problem: 2864. 最大二进制奇数 由于奇数的二进制末尾一定是 111&#xff0c;我们可以把一个 111 放在末尾&#xff0c;其余的 111 全部放在开头&#xff0c;这样构造出的奇数尽量大。 复杂度 时间复杂度: O ( n ) O(n) O(n) 空间复杂度: O ( 1 ) O(1) O(1) Code class…

C#,数值计算,用割线法(Secant Method)求方程根的算法与源代码

1 割线法 割线法用于求方程 f(x) = 0 的根。它是从根的两个不同估计 x1 和 x2 开始的。这是一个迭代过程,包括对根的线性插值。如果两个中间值之间的差值小于收敛因子,则迭代停止。 亦称弦截法,又称线性插值法.一种迭代法.指用割线近似曲线求方程根的2步迭代法.此法用通过…