Można jak pisze sam autor, można jak pisze olesio a można sobie napisać taką funkcję.
function ChangeINISectionName(FileName, OldSectionName, NewSectionName: string): Boolean;
const
BUFF_SIZE = 10485760; //maksymalny rozmiar sekcji (10 KB powinny wystarczyc)
var
Buffer: PChar;
begin
GetMem(Buffer, BUFF_SIZE);
try
result:= Boolean(GetPrivateProfileSection(PChar(OldSectionName), Buffer, BUFF_SIZE,
PChar(FileName)));
if (result = false) then
raise EAbort.Create('nie ma co robic skoro nic nie przeczytano');
result:= Boolean(WritePrivateProfileSection(PChar(NewSectionName), Buffer,
PChar(FileName)));
if (result = false) then
raise EAbort.Create('jak sie nie uda zapisac nowej to nie usuwac poprzedniej');
result:= Boolean(WritePrivateProfileSection(PChar(OldSectionName), nil,
PChar(FileName)));
finally
FreeMem(Buffer);
end;
end;
//przyklad uzycia funkcji
begin
ChangeINISectionName('d:\test.ini', '1', '2');
end;
Moja funkcja odczytuję całą sekcję, zapisuje ją pod nową nazwą i usuwa poprzednią sekcję (czyli to w sumie rozwiązanie autora tyle, że bezpośrednio korzysta z WinApi). .