[abcd]
1=
2=
3=
[cade]
2=
3=
4=
[bde]
1=
2=
3=
.
.
.
现有阶段我要读出所有[]内有'a'的内容,还要要读取小节内的键值。就是要把[abcd],[cade]给检索出来,怎么做?就像SQL内的like '*a*'。
主要是第一个问题。
不知道的仁兄给UP下。谢谢。
1=
2=
3=
[cade]
2=
3=
4=
[bde]
1=
2=
3=
.
.
.
现有阶段我要读出所有[]内有'a'的内容,还要要读取小节内的键值。就是要把[abcd],[cade]给检索出来,怎么做?就像SQL内的like '*a*'。
主要是第一个问题。
不知道的仁兄给UP下。谢谢。
解决方案 »
- 关于集合和枚举的使用,请教高手!
- 报表打印,纸张始终是A4 的纸..请求帮忙!~~~
- dbcombobox1下拉选项有数据,但所选择的记录并不出现在dbcombobox1里。
- 大家谈谈学D的好书!!!
- 抢分了~~2000下写的程序到98下BDE好象不好使
- 我是个还没入门的,如何在DELPHI中写类似ASP中的用户登录验证代码?
- 怎样使ToolBar浮动起来?
- 如何动态的获得Form上的ICON(Form是在Dll中的)?注:提供的方法不要涉及到DLL文件名称
- 统计:csdn上的delphi专区的人有多少?
- 十万火急,请求帮助
- 紧急求救!如何把Varchar类型的内容变为Image类型。大家关注!
- 卖书!经典书籍全部低价!
IniFiles;var
IniFile: TIniFile;
Data: String;
begin
IniFile := TIniFile.Create('dan.ini');
Data := IniFile.ReadString('abcd', '1', '');
...
从.INI 文件中获取字符串
var
strResult:pchar;
begin
GetPrivateProfileString(
'windows', // [] 中标题的名字
'NullPort', // = 号前的名字
'NIL', // 如果没有找到字符串时,返回的默认值
strResult, // 存放取得字符
100, // 取得字符的允许最大长度
'c:\forwin95\win.ini' // 调用的文件名
);
edit1.text:=strResult; // 显示取得字符串
从.INI 文件中获取整数
edit1.text:=inttostr(GetPrivateProfileInt(
'intl', // [] 中标题的名字
'iCountry', // = 号前的名字
0,// 如果没有找到整数时,返回的默认值
'c:\forwin95\win.ini' // 调用的文件名
));
向.INI 文件写入字符串
WritePrivateProfileString(
'windows', // [] 中标题的名字
'load', // 要写入“ = ”号前的字符串
'accca', // 要写入的数据
'c:\forwin95\win.ini' // 调用的文件名
);
向.INI 文件写入整数
WritePrivateProfileSection(
'windows', // [] 中标题的名字
'read=100', // 要写入的数据
'c:\forwin95\win.ini' // 调用的文件名
);
上面的方法是调用 API 函数,下面介绍另一种不用 API 从.INI 文件中获取字符的方法
var MyIni: TIniFile;
begin
MyIni := TIniFile.Create('WIN.INI');// 调用的文件名
edit1.text:=MyIni.ReadString('Desktop', 'Wallpaper', '');// 取得字符
end;
向.INI 文件中写入字符的方法
var MyIni: TIniFile;
begin
MyIni := TIniFile.Create('WIN.INI');// 调用的文件名
DelphiIni.WriteString('Desktop', 'Wallpaper', 'c:\a.bmp');
end;
(转载)
然后在判断[]内有'a',用if pos('a',[abcd])>0 来判断。
例如:
IniFile.ReadSection('Ports',Listbox1.Items);
那么ListBox1中的数据可以令你满意
Var
FList: TStringList;
tmpStr: String;
Begin
FList:= TStringList.Create;
FList.LoadFromFile('c:123.ini');
for i:=0 to flist.count-1 do begin
if copy(flist[i],1,2)='a' then do something;具体位置你自己判断一下
end;
[MY_TYPE]
NAME=abcd#cade#bde
[ITEMS]
abcd=1#2#3#
cade=2#3#4#
bde=.......
[abcd]
1=
2=
3=
[cade]
2=
3=
4=
[bde]
1=
2=
3=
.
.
.代码:
全局变量
var:
FinanceTypeName : tStringList
FinanceIniPath := GetCurrentDir;
Finance_Ini := TInifile.Create(FinanceIniPath + '/Finance.ini');
AnalyseFinanceType( Finance_Ini.ReadString(MY_TYPE','NAME','ERROR') );procedure TMain.AnalyseFinanceType( Name : String );
var i : Integer;
TypeName : String;
begin
//从配置文件中读取业务类别列表
if FinanceTypeName <> nil then
FinanceTypeName.Free;
FinanceTypeName := TStringList.Create; if Name = 'ERROR' then
begin
showmessage('error');
exit;
end; TypeName := '';
for i := 1 to Length(Name) do
begin
if Name[i] <> Finance_Compart then
TypeName := TypeName + Name[i]
//za在此处加入对TypeName 的判断
{ if Pos('a',TypeName ) then
//楼主搞定吧} else
begin
FinanceTypeName.Add(TypeName);
TypeName := '';
end;
end;
end;
可能需要自己手工来解决这个问题,我这里有一个大概的思路,你可以试一试
但代码不一定能调的通,因为我是随手写的,未经试验。。Function GetChapterStr(var Rtn_List:TStringList;strFileName,strFind:String):Boolean;
var
MainList : TStringList;
i : integer;
tmpStr : String;
begin
if strFind = '' then
begin
Result := False;
exit;
end;
MainList := TStringList.Create;
MainList.LoadFromFile(strFileName);
for i := 0 to MainList.Count - 1 do
begin
tmpStr := MainList.Strings[i];
if (Pos('[',tmpStr) <> 0) and (Pos(']',tmpStr) <> 0) and (Pos(strFind,tmpStr)<> 0 ) then
Rtn_List.Add(tmpStr);
end;
Result := True;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
strList : TStringList;
i : integer;
begin
strList := TStringList.Create;
if GetChapterStr(strList,'E:\project\Delphi\CrmSource\db.ini','D') then
begin
for i:= 0 to StrLIst.Count - 1 do
begin
showmessage(strList.Strings[i]);
end;
end;
end;
var
MainList : TStringList;
i : integer;
tmpStr : String;
begin
if strFind = '' then
begin
Result := False;
exit;
end;
MainList := TStringList.Create;
MainList.LoadFromFile(strFileName);
for i := 0 to MainList.Count - 1 do
begin
tmpStr := MainList.Strings[i];
if (Pos('[',tmpStr) <> 0) and (Pos(']',tmpStr) <> 0) and (Pos(strFind,tmpStr)<> 0 ) then
Rtn_List.Add(tmpStr);
end;
Result := True;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
strList : TStringList;
i : integer;
begin
strList := TStringList.Create;
if GetChapterStr(strList,'E:\project\Delphi\CrmSource\db.ini','D') then
begin
for i:= 0 to StrLIst.Count - 1 do
begin
showmessage(strList.Strings[i]);
end;
end;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
f : TINIFile;
begin
f := TINIFile.Create('c:\Edit.ini');
f.WriteString('TEdit', Edit1.Name, Edit1.Text);
f.WriteString('TEdit', Edit2.Name, Edit2.Text);
f.WriteString('TEdit', Edit3.Name, Edit3.Text);
f.WriteString('Edit', Edit4.Name, Edit4.Text);
f.Free;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
str1,str2:TStringList;
f:TiniFile;
begin
f := TINIFile.Create('c:\Edit.ini');
str1:=TstringList.Create;
str2:=TstringList.Create;
f.ReadSections(str1);
for i:=0 to str1.Count-1 do
if strscan(pchar(str1[i]),'a')<>nil then
str2.Add(str1[i]);
for i:=0 to str2.Count-1 do
f.readsectionvalues(str2[i],Listbox1.Items);
f.Free;
end;end.