Hola walterk.
Si tenes la certeza de que las cadenas a buscar ('[Area.' y 'Layer=') siempre existirán en el archivo, podrías hacer:
Código Delphi
[-]
uses StrUtils;
procedure ActualizarArea(const FileName, Area: string);
var
Strings: TStrings;
i, p1, p2: Integer;
cad : string;
begin
Strings := TStringList.Create;
try
Strings.LoadFromFile(FileName);
for i := 0 to Strings.Count-1 do
if Pos('[Area.', Strings[i]) <> 0 then Break;
cad := Strings[i];
p1 := Pos('[Area.', cad);
p2 := PosEx(']', cad, p1);
Delete(cad, p1 + 6, p2 - p1 - 6);
Insert(Area, cad, p1 + 6);
Strings[i] := cad;
for i := 0 to Strings.Count-1 do
if Pos('Layer=', Strings[i]) <> 0 then Break;
cad := Strings[i] + '~'; p1 := Pos('Layer=', cad);
p2 := PosEx('~', cad, p1);
Delete(cad, p1 + 6, p2 - p1 - 6 + 1);
Insert(Area, cad, p1 + 6);
Strings[i] := cad;
Strings.SaveToFile(FileName);
finally
Strings.Free;
end;
end;
Ejemplo de uso:
Código Delphi
[-]
const
FNAME = 'area.txt';
procedure TForm1.FormCreate(Sender: TObject);
begin
Memo1.Lines.LoadFromFile(FNAME);
end;
procedure TForm1.btNewVersionClick(Sender: TObject);
begin
ActualizarArea(FNAME, '3141592654' ); Memo1.Lines.LoadFromFile('c:\tmp\area.txt');
end;
Saludos