Code: |
procedure TOptions.SaveProps; var I, N: Integer; TypeData: PTypeData; List: PPropList; begin TypeData:= GetTypeData(ClassInfo); N:= TypeData.PropCount; if N <= 0then Exit; GetMem(List, SizeOf(PPropInfo)*N); try GetPropInfos(ClassInfo,List); for I:= 0to N - 1do case List[I].PropType^.Kind of tkEnumeration, tkInteger: FIniFile.WriteInteger(Section, List[I]^.name,GetOrdProp(Self,List[I])); tkFloat: FIniFile.WriteFloat(Section, List[I]^.name, GetFloatProp(Self, List[I])); tkString, tkLString, tkWString: FIniFile.WriteString(Section, List[I]^.name, GetStrProp(Self, List[I])); end; finally FreeMem(List,SizeOf(PPropInfo)*N); end; end;
procedure TOptions.ReadProps; var I, N: Integer; TypeData: PTypeData; List: PPropList; AInt: Integer; AFloat: Double; AStr: string; begin TypeData:= GetTypeData(ClassInfo); N:= TypeData.PropCount; if N <= 0then Exit; GetMem(List, SizeOf(PPropInfo)*N); try GetPropInfos(ClassInfo, List); for I:= 0to N - 1do case List[I].PropType^.Kind of tkEnumeration, tkInteger: begin AInt:= GetOrdProp(Self, List[I]); AInt:= FIniFile.ReadInteger(Section, List[I]^.name, AInt); SetOrdProp(Self, List[i], AInt); end; tkFloat: begin AFloat:=GetFloatProp(Self,List[i]); AFloat:=FIniFile.ReadFloat(Section, List[I]^.name,AFloat); SetFloatProp(Self,List[i],AFloat); end; tkString, tkLString, tkWString: begin AStr:= GetStrProp(Self,List[i]); AStr:= FIniFile.ReadString(Section, List[I]^.name, AStr); SetStrProp(Self,List[i], AStr); end; end; finally FreeMem(List,SizeOf(PPropInfo)*N); end; end;
function TOptions.Section: string; begin Result := ClassName; end; |
Теперь, для проверки работоспособности, и отладки объекта опций создадим новое приложение и подключим к нему модуль, в котором описан и реализован объект TOptions. Ниже приведен программный код, иллюстрирующий создание наследника от класса TOptions и его использования в главной (и единственной) форме нашего тестового приложения интерфейсная часть выглядит так:
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!