Warum eigentlich nicht einfach so?
Delphi-Quellcode:
function DeleteUser(user: String): Boolean;
var Identities: TIniFile;
begin
try
Identities:=TIniFile.Create(ExtractFilePath(paramstr(0))+'\Identities.dat');
try
Identities.EraseSection(user);
result := True;
except
result := False;
end;
Identities.Free;
except
result := False;
end;
end;
da wird das Identities.Free auch immer ausgeführt wenn das TIniFile.Create erfolgreich ist, und wenn nicht wird das result auf False gesetzt, wobei man den äußeren Try-Exceptblock weglassen könnte da TIniFile.Create nie schief geht außer der Speicher ist voll.