unit NameValueUnit; interface uses Classes, SysUtils; type TGetNameValueFlag = (gfRemove, gfNoRemove); procedure SetNameValue(Title, Value: String); function GetNameValue(Title: String; Flag: TGetNameValueFlag = gfRemove): String; //ƒeƒXƒg—p //{---------------------------------------- function NameValueList: TStringList; var uNameValueList: TStringList; //----------------------------------------} implementation //var uNameValueList: TStringList; function NameValueList: TStringList; begin if not Assigned(uNameValueList) then uNameValueList := TStringList.Create; Result := uNameValueList; end; procedure SetNameValue(Title, Value: String); begin if (Title = '') then raise Exception.Create('EmptyStr Error: SetNameValue'); NameValueList.Values[Title] := Value; end; function GetNameValue(Title: String; Flag: TGetNameValueFlag = gfRemove): String; var Index: Integer; begin if (Title = '') then raise Exception.Create('EmptyStr Error: GetNameValue'); Result := NameValueList.Values[Title]; if Flag = gfRemove then begin Index := NameValueList.IndexOfName(Title); if Index <> -1 then NameValueList.Delete(Index); end; end; initialization uNameValueList := nil; finalization if Assigned(uNameValueList) then uNameValueList.Free; end.