首页 > 其他分享 >【学习】lazarus的Laz2_XMLCfg用法

【学习】lazarus的Laz2_XMLCfg用法

时间:2024-12-22 17:52:24浏览次数:10  
标签:XMLConfig Path Laz2 lazarus XMLCfg Units ProjectOptions Unit TXMLConfig

lazarus的lpi等文件都是使用XML格式,使用Laz2_XMLCfg可以方便读写这类XML配置文件。
0、在uses添加Laz2_XMLCfg单元。
1、下面的例子是读取ProjectOptions/Units所有unit中FileName

<?xml version="1.0" encoding="UTF-8"?>
<CONFIG>
  <ProjectOptions>
    <Units>
      <Unit>
        <Filename Value="project1.lpr"/>
        <IsPartOfProject Value="True"/>
      </Unit>
      <Unit>
        <Filename Value="unit1.pas"/>
        <IsPartOfProject Value="True"/>
        <ComponentName Value="Form1"/>
        <HasResources Value="True"/>
        <ResourceBaseClass Value="Form"/>
        <UnitName Value="Unit1"/>
      </Unit>
      <Unit>
        <Filename Value="unit2.pas"/>
      </Unit>
    </Units>
  </ProjectOptions>
</CONFIG>
procedure TForm1.Button5Click(Sender: TObject);
var
  XMLConfig: TXMLConfig;
  s:String;
  i,n,NewUnitCount:Integer;
  LegacyList: Boolean;
  SubPath: String;
  NewUnitFilename,Path: String;
begin
  Memo1.Lines.Clear;
  Memo1.Lines.Add('');
  Path:='ProjectOptions/';
  XMLConfig:=TXMLConfig.Create('project2.lpi');
  n:=XMLConfig.GetChildCount('ProjectOptions/Units');
  LegacyList:= XMLConfig.IsLegacyList('ProjectOptions/Units/');
  NewUnitCount:=XMLConfig.GetListItemCount('ProjectOptions/Units/', 'Unit', LegacyList);
  for i := 0 to NewUnitCount - 1 do begin
    SubPath:=Path+'Units/'+XMLConfig.GetListItemXPath('Unit', i, LegacyList)+'/';
    NewUnitFilename:=XMLConfig.GetValue(SubPath+'Filename/Value','');
    Memo1.Lines.Add(NewUnitFilename);
  end;
  XMLConfig.Flush;
  XMLConfig.Free;
end;

 2、在Units添加一下unit,FileName='Unit2.pas'

procedure TForm1.Button6Click(Sender: TObject);
var
  XMLConfig: TXMLConfig;
  s:String;
  i,n,NewUnitCount:Integer;
  LegacyList: Boolean;
  SubPath: String;
  NewUnitFilename,Path: String;
begin
  Path:='ProjectOptions/';
  XMLConfig:=TXMLConfig.Create('project2.lpi');
  n:=XMLConfig.GetChildCount(path+'Units');
  LegacyList:= XMLConfig.IsLegacyList(path+'Units/');
  NewUnitCount:=XMLConfig.GetListItemCount(path+'Units/', 'Unit', LegacyList);//读取Units的unit数量
  //在原有的Units添加1个Unit
  i:=NewUnitCount;
  SubPath:=Path+'Units/'+XMLConfig.GetListItemXPath('Unit', i, LegacyList)+'/';
  XMLConfig.SetValue(SubPath+'Filename/Value','unit2.pas');
  XMLConfig.Flush;
  XMLConfig.Free;
end;

3、删除第2个Unit

procedure TForm1.Button3Click(Sender: TObject);
var
  XMLConfig: TXMLConfig;
begin
  XMLConfig:=TXMLConfig.Create('project2.lpi');
  XMLConfig.DeletePath('ProjectOptions/Units/Unit[2]');
  XMLConfig.Flush;
  XMLConfig.Free;
end;

4、删除第2个unit的FileName

procedure TForm1.Button2Click(Sender: TObject);
var
  XMLConfig: TXMLConfig;
begin
  XMLConfig:=TXMLConfig.Create('project2.lpi');
  XMLConfig.DeleteValue('ProjectOptions/Units/Unit[2]/Filename/Value');
  XMLConfig.Flush;
  XMLConfig.Free;
end;

 4、读第2个Unit的Filename

procedure TForm1.Button7Click(Sender: TObject);
var
  XMLConfig: TXMLConfig;
  Path:String;
begin
  Path:='ProjectOptions/';
  XMLConfig:=TXMLConfig.Create('project2.lpi');
  Memo1.Lines.Add(XMLConfig.GetValue(Path+'Units/Unit[2]/Filename/Value',''));
  XMLConfig.Flush;
  XMLConfig.Free;
end;

 

标签:XMLConfig,Path,Laz2,lazarus,XMLCfg,Units,ProjectOptions,Unit,TXMLConfig
From: https://www.cnblogs.com/qiufeng2014/p/18622328

相关文章

  • 在Lazarus下的Free Pascal编程教程——用向导创建一个使用使用LCL和FCL组件的项目(pTet
    0.前言我想通过编写一个完整的游戏程序方式引导读者体验程序设计的全过程。我将采用多种方式编写具有相同效果的应用程序,并通过不同方式形成的代码和实现方法的对比来理解程序开发更深层的知识。了解我编写教程的思路,请参阅体现我最初想法的那篇文章中的“1.编程计划”:学习编程......
  • 【原创】D2Bridge for Lazarus(fpcupdeluxe)向导
    D2BridgeforLazarus向导不支持fpcupdeluxe版及服务端编译出错等问题,修复后3种类型的服务端都可以正常使用。这个向导是独立的程序,抽时间集成到IDE。从百度网盘下载本人修复的版本:通过百度网盘分享的文件:D2Bridge_Lazarus链接:https://pan.baidu.com/s/1iOuhd-cLeQwQrA8zX4Hqwg?p......
  • 从Delphi到Lazarus——在Lazarus中使用ActiveX控件(导入类型库)
    0.前言Lazarus的设计目标是应用FreePascal,所以所有凡是FreePascal能运行的平台,Lazarus都可以运行。通俗地说就是Lazarus追求的是跨平台编程,致力于“一次编写,到处编译”。Lazarus最初是一个基于FreePascal的Delphi仿制品。Lazarus作为一个可能代替Delphi的集成开发环境,从诞生......
  • 从Delphi到Lazarus——Delphi转换器
    0.前言在Lazarus中使用Delphi编写的文件是一件很简单的事情,这是因为Lazarus可以直接打开Delphi的任何文件,甚至有些文件可以不做任何修改就可以直接使用到你的Lazarus程序中。不过,Lazarus与Delphi毕竟不是同一个东西,还是存在一些区别的,这就需要将Delphi文件转换为Lazarus需要的格......
  • 从Delphi到Lazarus——Lazarus编程时可以使用的组件(控件)
    0.前言使用过可视化编程的人都知道在编程时组件的重要性。可以使用的组件越多,编程越方便快捷。理论上,Delphi中的所有组件在Lazarus中都可以使用。当然,在Windows编程时多数是可以直接使用的,有些需要做适当的修改才能使用。而在Unix或Linux下编程就有些不能使用了,这涉及到操作系统......
  • [原创]lazarus在(linux)设置应用在任务栏单一窗口图标显示
    如果lazarus的(linux)应用有多个form,并且form用show显示,在任务栏就会显示多个form的图标,个人感觉比较乱。如果只想显示主form图标,可以在projecr的lpk增加:Application.TaskBarBehavior:=tbSingleButton;以下是完整的lpk:programproject1;{$modeobjfpc}{$H+}uses{......
  • 第1章 Lazarus的系统结构
    第1章Lazarus的系统结构Lazarus是一个基于ObjectPascal语言的集成开发环境(IDE)。FreePascal编译器为Lazarus提供了后端支持。这种后端引擎与集成开发环境的组合类似于VisualStudio对于C++或BorlandDelphi。它生成高效且高度优化的原生代码(NativeCode)。相比之下,J......
  • 从Delphi到Lazarus——Lazarus开发环境使用入门教程
    0.前言曾经有过更换开发环境体验的编程爱好者都会有同样的感受:打开新更换的开发环境后,看到陌生的界面无从下手。想写一段小程序试一试,却你找不到自己需要的组件在哪里。其实,我们每到一个新地方,首先要找点资料熟悉周围的环境。编写程序也是这样,使用一个新的开发环境首先要熟悉这......
  • lazarus三方控件注意事项
    lazarus三方控件注意事项1)EHLIBTprintDbgrideh不能用,跟它源码,forfpc没有任何打印的代码。Tdbgrideh斑马线,设好后,无效。其它问题。。不知。可以明确:EHLIBforfpc不是全功能的,使用时要注意鉴别。2)FASTREPORT使用汉化,乱码,只能使用英文的。其它问题。。不知3)dataset-seri......
  • lazarus使用中文拼音首字母实现中文变量等快速代码补全
    在lazarus使用中文变量等代码补全功能基础上,按以下方法就可以实现输入中文拼音首字母就可以快速代码补全功能。代码补全功能:Ctrl+w 打开\lazarus\ide\wordcompletion.pp找到 procedureAddIfMatch(constALine,ALineUp:string;constAFirstPos,ALength:Integer);(lazarus......