16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"RE:TMemIniFileでデータ入出力(その6)"
この発言は #01130 H-Triton さんのTMemIniFileでデータ入出力(その6) に対するコメントです
この発言に対し以下のコメントが寄せられています
#01133 H-Triton さん RE:TMemIniFileでデータ入出力(その6)
nifty:FDELPHI/MES/16/1130 H-Tritonさん:
このサンプルコードで使用したTStirngs.IndexOfNameメソッドは、最初に
見つかったNameのIndexしか返さないので、IniFileに複数のセクションが
あって同名のキャプション(Key)がある場合、期待した動作をしてくれな
い場合があります。
そこで、指定したセクション内でKeyを検索してIndexを返す関数を自分で
作ることによって対応します。
// 指定されたセクション内で文字列中のNameを検索してIndexを返す
function SecIndexOfName(Strings: TStrings; Sec, Name: string): Integer;
var
P: Integer;
S: string;
begin
Result:= Strings.IndexOf('[' + Sec + ']');
if Result = -1 then Exit else Inc(Result);
repeat
S:= Strings[Result];
P:= AnsiPos('=', S);
if (P > 1) and (AnsiCompareText(Copy(S, 1, P - 1), Name) = 0) then Exit;
Inc(Result);
until (S[1] = '[') and (S[Length(S)] = ']');
Result:= -1;
end;
//FDELPHI/MES/16/1130のコードを若干手直し
procedure TForm1.ListView1Edited(Sender: TObject; Item: TListItem;
var S: String);
var
aList: TStrings;
n: Integer;
begin
if (S = '') or (TreeView1.Selected.Level <> 1) then S:= Item.Caption;
if S = Item.Caption then Exit;
aList:= TStringList.Create;
try
aList.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'fFdelphi.bm2');
n:= SecIndexOfName(aList, TreeView1.Selected.Text, Item.Caption);
if n > -1 then
begin
aList[n]:= S + '=' + Item.SubItems.CommaText;
aList.SaveToFile(ExtractFilePath(ParamStr(0)) + 'fFdelphi.bm2');
end;
finally
aList.Free;
end;
end;
○ 心を打つ美しい文書作りは「えるの〜と」 ○
http://member.nifty.ne.jp/h-triton/
Avalon's Friendly Crew #80008 H-Triton (^^) since 1996
- FDELPHI MES(16):玉石混淆みんなで作るSample蔵【見本蓄積】 00/07/09 -
Original document by H-Triton 氏 ID:(QZV11422)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|