Si quieres que "el quitar" la extensión no dependa del tipo de archivo (como la solución del amigo Marcos) y que no tenga el problema de archivos raros (como la solución del amigo Román), puedes utilizar la función
ExtractFileExt (almenos a partir de Delphi 6) y mezclarlo con el código de Marcos
Código:
procedure TForm1.Button1Click(Sender: TObject);
var
s, ext : String;
n : Integer;
r : Integer;
begin
for n := 0 to Memo1.Lines.Count - 1 do
begin
S := memo1.lines[n];
ext := ExtractFileExt(s);
r := Pos('.' + ext, S);
if r > 0 then
begin
Delete(s, r, 4);
memo1.Lines[n] := s;
end;
end;
end;
PD: pensaba que había una función que devolvía sólo el nombre del archivo (sin extensión), pero si existe, no la he encontrado en la ayuda