InnoSetup中枚举出INI文件的所有sections和键值
原文 http://blog.chinaunix.net/uid-23480430-id-3016899.html
InnoSetup支持一些INI文件操作函数,
- procedure ArrayAddStr(var Arr: Array of String; Str: String);
- var
- Len: Longint;
- begin
- Len := GetArrayLength(Arr);
- SetArrayLength(Arr, Len + 1);
- Arr[Len] := Str;
- end;
- //-- INI
- function IniGetSectionName(Line: String; var Name: String): Boolean;
- var
- P0, P1: Integer;
- begin
- Line := TrimLeft(Line);
- P0 := Pos('[', Line);
- P1 := Pos(']', Line);
- if (P0 = 1) and (P1 > P0 + 1) then begin
- Name := Copy(Line, P0 + 1, P1 - P0 - 1);
- Result := True;
- end
- else
- Result := False;
- end;
- function IniGetKeyName(Line: String; var Name: String): Boolean;
- var
- P0, P1: Integer;
- begin
- Line := TrimLeft(Line);
- P0 := Pos('=', Line);
- P1 := pOS(';', Line); //; is start of comment
- if (P0 > 1) and ((P1 = 0) or (P1 > P0)) then begin
- Name := Trim(Copy(Line, 1, P0 - 1));
- Result := True;
- end
- else
- Result := False;
- end;
- procedure IniGetSections(var Arr: Array of String; const Path: String);
- var
- i: Longint;
- Name: String;
- Lines: Array of String;
- begin
- SetArrayLength(Arr, 0);
- if not LoadStringsFromFile(Path, Lines) then exit;
- for i := 0 to GetArrayLength(Lines) - 1 do begin
- if IniGetSectionName(Lines[i], Name) then ArrayAddStr(Arr, Name);
- end;
- end;
- procedure IniGetKeys(var Arr: Array of String; const Path: String; const Section: String);
- var
- i: Longint;
- Name: String;
- Lines: Array of String;
- begin
- SetArrayLength(Arr, 0);
- if not LoadStringsFromFile(Path, Lines) then exit;
- for i := 0 to GetArrayLength(Lines) - 1 do begin
- if IniGetSectionName(Lines[i], Name) then begin
- if CompareText(Name, Section) = 0 then break;
- end;
- end;
- if i < GetArrayLength(Lines) then begin
- { The section is }
- for i := i + 1 to GetArrayLength(Lines) - 1 do begin
- if IniGetSectionName(Lines[i], Name) then break
- else if IniGetKeyName(Lines[i], Name) then ArrayAddStr(Arr, Name);
- end;
- end;
- end;
InnoSetup中枚举出INI文件的所有sections和键值的更多相关文章
- 向php文件中添加php.ini文件
向php文件中添加php.ini文件 默认情况下,php是没有php.ini配置文件的,必须手工添加php.ini文件 在php安装目录中,复制php.ini文件到/usr/local/php/lib ...
- [转载]windows7中没用boot.ini文件而是改用BCDEDIT来配置了
原文地址:windows7中没用boot.ini文件而是改用BCDEDIT来配置了作者:开心骝哥 本人安装的Win7,因为机上有两个系统,一个dos系统,一个win7系统,开机时总是会在系统选择的界面 ...
- win7下iis中配置php.ini文件
将php.ini-development配置文件重命名为php.ini配置文件即可. 接着做如下配置操作: 1.修改php.ini配置文件 打开php.ini配置文件,找到 12 ; On windo ...
- web安全之php中常见的INI文件配置
php.ini 在 PHP 启动时被读取.对于服务器模块版本的 PHP,仅在 web 服务器启动时读取 一次.对于 CGI 和 CLI 版本,每次调用都会读取. * Apache web 服务器在启动 ...
- IDEA中怎么创建ini文件
首先博主在这使用的是idea的2019.3.2的版本,不知道的话可以打开help菜单的about查看 第一步: 具体需要在setings安装ini插件 第二步: 在File Types中查看ini,没 ...
- 获取ini文件所有的Sections和Keys
获取ini文件中所有的Sections和Keys,并以pair对的方式存入到vector中 #include <iostream> #include <windows.h> # ...
- 利用FastJson,拼接复杂嵌套json数据&&直接从json字符串中(不依赖实体类)解析出键值对
1.拼接复杂嵌套json FastJson工具包中有两主要的类: JSONObject和JSONArray ,前者表示json对象,后者表示json数组.他们两者都能添加Object类型的对象,但是J ...
- Nginx中修改php.ini的上传设置upload_max_filesize的值
普遍的网络越来越快,以前小家子气的2M上传限制慢慢变得不合时宜了.最近就把2M的限制直接提升到了20M...代码层面很快就修改好了,没什么可说的.但是上线的话还得修改一下服务器的配置.服务器是Ngin ...
- 关于C#操作INI文件的总结
原文:关于C#操作INI文件的总结 INI文件其实是一种具有特定结构的文本文件,它的构成分为三部分,结构如下: [Section1]key 1 = value2key 1 = value2--[S ...
随机推荐
- BZOJ1106: [POI2007]立方体大作战tet
1106: [POI2007]立方体大作战tet Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 419 Solved: 302[Submit][St ...
- 使用MutationObserver对象封装一个监听DOM生成的函数
(function(win){ 'use strict'; var listeners = []; var doc = win.document; var MutationObserver = win ...
- 如何将EXCEL表导入MYSQL
在平时的工作学习中,难免会遇到需要把EXCEL表中的数据导入到MYSQL中,比如要把EXCEL中的数据进行核对,或者要把测试用例导入到TestLink中.本人搜集相关的资料并加以实践总 ...
- android 点击桌面图标,打开手机浏览器进入对应的站点
做一个假的adnroid app.要实现点击桌面图标.打开手机浏览器进入对应的站点,实现方法非常easy import android.app.Activity; import android.con ...
- 漫话Unity3D(一)
前言 使用Unity已经有将近半年时间了,尽管项目还仅仅是个半成品,可是Unity差点儿相同玩熟了.这里把使用过程中碰到的问题梳理一遍.不会涉及到太过详细的功能和代码,可是假设开发一个网游又都会涉及到 ...
- windows下删除服务的方法
删除的办法有两个: 办法一: 用sc.exe这个Windows命令 开始——运行——cmd.exe,然后输入sc就可以看到了.使用办法很简单: sc delete "服务名" (如 ...
- 如何让div横向排列
方法一: 一般情况,默认的div是写一个换一行,那么如何定义两个div横向排列而不换行呢? div默认的display属性是block.所以每一个div都是新的一行,现在把display换成inlin ...
- avalon学习笔记一 列表及条件过滤
好长时间都没有更新博客了,不是因为没有学习新的东西,而是到了新的单位每天玩命加班实在是太累了!经过一年的努力吧,终于可以轻松一下了.废话少说,直接干货吧! 由于是学习阶段,就直接拿了公司的二级页面做了 ...
- asp.net 实现 tts
之前用WinForm实现tts已经成功,就调用了下系统的类库.但我把相同的代码搬到asp.net上时却碰到了许多问题,查了好多网站.试过了很多方法,到现在算是做出了一部分吧. 之前调用微软的TTS是用 ...
- va_list/va_start/va_arg/va_end深入分析
http://www.cnblogs.com/justinzhang/archive/2011/09/29/2195969.html