Aquí te pego unas líneas que utilizo para leer líneas de un fichero que te pueden servir como base de ejemplo, no tengo tiempo para más.
Código Delphi
[-]Procedure Leer_Cabecera_Pedidos();
var
F: TextFile;
S: string;
cNPedido:String;
nContPedido:Integer;
begin
nContPedido:=0;
cNomFicCNotas:='Noc010'+Vendedor + cTipFileim;
cNomFicCNotas:=cCaminoTerminales + cNomFicCNotas;
Ultimo_Pedido();
Try
Serie:=FormatFloat('0000000',StrToInt(DmTerm.QrUltCons.Fields[0].AsString)+1);
Except
Serie:='0000001';
ShowMessage('Atención:No había pedidos se registra con el número 1.');
end;
AssignFile(F, cNomFicCNotas);
Reset(F);
DmTerm.PedCliSerie.Append;
DmTerm.PedCliSerieSerie.Value:=Serie;
DmTerm.PedCliSerieFecha.Value:=FileDateToDateTime(FileAge(cNomFicCNotas));
DmTerm.PedCliSerieHora.Value :=FileDateToDateTime(FileAge(cNomFicCNotas));
DmTerm.PedCliSerieFechadescarga.Value:=Date;
DmTerm.PedCliSerieHoradescarga.Value:=Time;
DmTerm.PedCliSerieVendedor.Value:=Vendedor;
DmTerm.PedCliSerieObservaciones.Value:='Gestionado por: '+cNombreUsuario;
DmTerm.PedCliSerie.Post;
While not Eof(F) Do
begin
Readln(F, S);
cNPedido :=Copy(S,11,10);
if Not DmTerm.BusPedcli.FindKey([cNPedido]) then
begin
nContPedido:=nContPedido + 1;
DmTerm.Pedcli.Append;
DmTerm.PedcliNPedido.Value :=Copy(S,11,10);
PedidoBis:=Copy(S,11,10);
DmTerm.PedcliCodClient.Value:=Trim(Copy(S,0,10));
if DmTerm.QrClient.Locate('Codigo',Trim(Copy(S,0,10)),[])then
DmTerm.PedcliNombre.Value :=DmTerm.QrClientBuscar.Value
else
DmTerm.PedcliNombre.Value:='No encontrado';
DmTerm.PedcliFecha.Value :=Invierte_Fecha(Copy(S,261,10));
DmTerm.PedcliHora.Value :=StrToTime(Copy(S,272,5));
DmTerm.PedcliAgnus.Value :=Copy(s,263,2);
DmTerm.PedcliBase1.Value :=StrToFloat(Trim(StringReplace(Copy(S,114,8),'.',',',[rfReplaceAll])));
DmTerm.PedcliBase2.Value :=StrToFloat(Trim(StringReplace(Copy(S,122,8),'.',',',[rfReplaceAll])));
DmTerm.PedcliBase3.Value :=StrToFloat(Trim(StringReplace(Copy(S,130,8),'.',',',[rfReplaceAll])));
DmTerm.PedcliIva1.Value :=StrToFloat(Trim(StringReplace(Copy(S,154,8),'.',',',[rfReplaceAll])));
DmTerm.PedcliIva2.Value :=StrToFloat(Trim(StringReplace(Copy(S,162,8),'.',',',[rfReplaceAll])));
DmTerm.PedcliIva3.Value :=StrToFloat(Trim(StringReplace(Copy(S,170,8),'.',',',[rfReplaceAll])));
DmTerm.PedcliRec1.Value :=StrToFloat(Trim(StringReplace(Copy(S,194,8),'.',',',[rfReplaceAll])));
DmTerm.PedcliRec2.Value :=StrToFloat(Trim(StringReplace(Copy(S,202,8),'.',',',[rfReplaceAll])));
DmTerm.PedcliRec3.Value :=StrToFloat(Trim(StringReplace(Copy(S,210,8),'.',',',[rfReplaceAll])));
DmTerm.PedcliImporte.Value :=StrToFloat(Trim(StringReplace(Copy(S,243,8),'.',',',[rfReplaceAll])));
DmTerm.PedcliObservaciones.Value :=Copy(S,293,60);
DmTerm.PedcliProcesado.Value :=False;
DmTerm.Pedcli.Post;
Try
Leer_Lineas_Pedidos();
Except
ShowMessage('Error al leer líneas del pedido');
end;
Try
Leer_Incidencias();
Except
end;
end
else
begin
ShowMessage('El pedido del Cliente '+Trim(Copy(S,0,10))+' ya existe.'+
Chr(10)+'y no se incorporará');
end;
end;
CloseFile(F);
if nContPedido = 0 then
begin
DmTerm.PedCliSerie.Edit;
DmTerm.PedCliSerie.Delete;
ShowMessage('Error:No había ningún pedido.');
lError:=True;
end;
end;
Un Saludo.