Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#6

AW: Ini Section im Speicher umbenennen

  Alt 16. Feb 2020, 00:55
Mit TMemIniFile.GetStrings kommst du an den Inhalt als TStrings und mit TMemIniFile.SetStrings kannst du ihn wieder schreiben. Der verlinkte Code könnte also folgendermaßen angepasst werden:
Delphi-Quellcode:
function RenameSection(MemIniFile: TMemIniFile; const OldSection, NewSection: String): boolean;
var
  lst: TStringList;
  ind: Integer;
begin
  result := false;
  lst := TStringList.Create;
  try
    MemIniFile.GetStrings(lst);
    if lst.Count = 0 then Exit;
    if lst.indexOf('['+NewSection+']') >= 0 then Exit;

    ind := lst.IndexOf('['+OldSection+']');
    if ind < 0 then Exit;

    lst.Strings[ind] := '['+NewSection+']';
    MemIniFile.SetStrings(lst);
    result := true;
  finally
    lst.Free;
  end;
end;
Alternativ auch als class helper mit ein paar kleinen Verbesserungen:
Delphi-Quellcode:
type
  TMemIniFileHelper = class helper for TMemIniFile
  public
    function RenameSection(const OldSection, NewSection: String): boolean;
  end;

function TMemIniFileHelper.RenameSection(const OldSection, NewSection: String): boolean;
var
  lst: TStringList;
begin
  result := false;
  if SectionExists(NewSection) then Exit;
  if not SectionExists(OldSection) then Exit;

  lst := TStringList.Create;
  try
    GetStrings(lst);
    lst[lst.IndexOf('['+OldSection+']')] := '['+NewSection+']';
    SetStrings(lst);
    result := true;
  finally
    lst.Free;
  end;
end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat