Einzelnen Beitrag anzeigen

a.def
(Gast)

n/a Beiträge
 
#6

AW: Codezeile in Funktion umwandeln mit Schwierigkeiten

  Alt 16. Apr 2017, 14:33
Scheint aber verdammt kompliziert zu sein oder ich stelle mich doof an.

Delphi-Quellcode:
function TMemIniFile.ReadEnum<T, T2>(const Section: string; const Ident: T2; const Default: T): T;
begin
 Result := TEnumFunctions.GetValue<T>(ReadString(Section, TEnumFunctions.GetName<T2>(Ident), TEnumFunctions.GetName<T>(Default)));
end;

//

aJclCompressionMethod := IniF.ReadEnum<TIniSettings, TJclCompressionMethod>(sCurrentSection, TIniSettings.zipcompression, TJclCompressionMethod.cmDeflate);
Zitat:
E2250 Es gibt keine überladene Version von 'TMemIniFile.ReadEnum<_enums.TIniSettings,JclCompr ession.TJclCompressionMethod>', die man mit diesen Argumenten aufrufen kann
Aber ich glaube es nun kapiert zu haben. Die Angabe in Klammern <T> ist wohl dazu da um der Funktion mitzuteilen, um welche Typen es sich handelt.
Dann sieht mein Konstrukt nun so aus und statt 6 Methoden habe ich nun nur noch 4
Delphi-Quellcode:
function TMemIniFile.ReadEnum<T>(const Section: string; const Ident: T; const Default: T): T;
begin
 Result := TEnumFunctions.GetValue<T>(ReadString(Section, TEnumFunctions.GetName(Ident), TEnumFunctions.GetName<T>(Default)));
end;

procedure TMemIniFile.WriteEnum<T>(const Section: string; const Ident: T; Value: T);
begin
 WriteString(Section, TEnumFunctions.GetName(Ident), TEnumFunctions.GetName<T>(Value));
end;

function TMemIniFile.ReadEnum<T, T2>(const Section: string; const Ident: T; const Default: T2): T2;
begin
 Result := TEnumFunctions.GetValue<T2>(ReadString(Section, TEnumFunctions.GetName<T>(Ident), TEnumFunctions.GetName<T2>(Default)));
end;
// => aMode := IniF.ReadEnum<TIniSettings, TModes>(sCurrentSection, TIniSettings.mode, TModes.mManual);

procedure TMemIniFile.WriteEnum<T, T2>(const Section: string; const Ident: T; Value: T2);
begin
 WriteString(Section, TEnumFunctions.GetName<T>(Ident), TEnumFunctions.GetName<T2>(Value));
end;
// => IniF.WriteEnum<TIniSettings, TModes>(sCurrentSection, TIniSettings.mode, TModes.mManual);

Geändert von a.def (16. Apr 2017 um 14:55 Uhr)
  Mit Zitat antworten Zitat