Hola ZayDun.
Se podría optimizar el procedimiento haciendo que sólo se asigne el nuevo texto cuando se encuentra la ocurrencia buscada.
Otra cosa que puede aligerar un poco el tiempo es trabajar sobre un TStrings y luego asignar el resultado al TListBox.
Ejemplo:
Código Delphi
[-]
...
procedure TForm1.Button1Click(Sender: TObject);
var
i, p: Integer;
aux: string;
TS: TStrings;
begin
TS:= TStringList.Create;
try
TS.LoadFromFile('C:\TU_ARCHIVO.TXT');
for i:= 0 to TS.Count -1 do
begin
p := Pos('@', TS[i]);
if p > 0 then
begin
aux:= TS[i];
Delete(aux, p, MaxInt);
TS[i]:= aux;
end;
end;
ListBox1.Items.Assign(TS);
finally
TS.Free;
end;
end;
...
Un saludo.