Hola.
Primeramente, si el archivo de texto no tiene formato (es decir, del que se puede abrir con el bloc de notas) pues entonces mejor ábrelo con un TMemo, o incluso si no se va a mostrar al usuario, en un objeto TStrings creado por ti mismo.
En cuanto a cortar las cadenas, tan sólo tendrías que ir recorriendo línea por línea en un bucle, coger las distintas partículas de texto mediante la función Copy (ya que has dicho que tienen longitud fija, y almacenarlo en una base de datos. Quedaría algo así:
Código Delphi
[-]
procedure TForm1.Button1Click(Sender: TObject);
const
AnchoCodigo = 5;
AnchoApellido = 25;
var
S: TStrings; Codigo, Apellido1, Apellido2, Nombre, Ciudad, CodPostal: String;
N: Integer;
begin
S:=TStringList.Create;
S.LoadFromFile(Edit1.Text);
for n:=0 to S.Count-1 do
begin
Codigo:=Copy(S[n], 0, AnchoCodigo);
Apellido1:=Copy(S[n], AnchoCodigo+1, AnchoApellido);
Apellido2:=Copy(S[n], AnchoCodigo+AnchoApellido+2, AnchoApellido);
Nombre:=Copy(S[n], AnchoCodigo+AnchoApellido+AnchoApellido+3, AnchoNombre);
Tabla.Insert;
TablaCodigo.Value:=Limpiar(Codigo);
TablaApellido1.Value:=Limpiar(Apellido1);
TablaApellido2.Value:=Limpiar(Apellido2);
TablaNombre.Value:=Limpiar(Nombre);
Tabla.Post;
end;
S.Free;
end;
La función Limpiar tendrás que declararla a parte. La he puesto porque al coger los campos con la función Copy con un ancho fijo, pues entonces al final de todos los campos tendrás espacios. Por ejemplo, si el ancho del campo nombre es 10 y tienes "Miguel", pues el dato que se guardará será "Miguel ", con cuatro espacios. La función Limpiar debería dejarlo en "Miguel". Pero eso ya te lo dejo a ti
Salu2.