Ver Mensaje Individual
  #4  
Antiguo 03-04-2008
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Reputación: 26
BlueSteel Va por buen camino
Talking hace dias hice estos.. y funca super

Cita:
Empezado por johurgi Ver Mensaje
Hola a todos de nuevo,

Alguien sabe como puedo cortar cadenas de un fichero de texto. Las cadenas son de tamanyo fijo.

Código:
codigo1 apellido11 apellido12,nombre1    ciudad1   codigopostal1
codigo2 apellido21 apellido22,nombre2    ciudad2   codigopostal2
codigo3 apellido31 apellido32,nombre3    ciudad3   codigopostal3
codigo4 apellido41 apellido42,nombre4    ciudad4   codigopostal4
codigo5 apellido51 apellido52,nombre5    ciudad5   codigopostal5
...
El problema es que tengo que ir cortandolas y almacenandolas en una base de datos, y ya he probado a cargar el fichero en un richedit y me pierde datos por lo que no es muy fiable.

Gracias de antemano.
Hola johurgi

Mira.. yo tenia que pasar un archivo de texto que venia con columnas definidas a una base de datos... es super serncillo.. para eso utilice lo sgte componentes:

- TJvCsvDataSet -> de la Jvcl
- TDataSource -> vinculado al TJvCsvDataSet
- TDBGrid -> vinculado al TDataSource

le asignas el archivo de texto al TJvCsvDataSet y defines todos los campos y ancho de las columnas.. (ya sabes que cadenas son de tamanyo fijo)

si lo quieres hacer por codigo tengo esto para asingar el archivo

Código Delphi [-]
     DTexto.Active    := False;
     DTexto.FileName := Concat(Label1.Caption,'\',Archivo.Text); //obtengo la ruta de unTDirectoryListBox y un  TFileListBox....
     DTexto.Active    := True;
     Edit4.Text         := IntToStr(DTexto.RecordCount); // obtengo el numero de registros

donde DTexto es el TJvCsvDataSet

luego ejecuto este codigo pasa agregarlos a una Tabla (SQL Server y ADO)

Código Delphi [-]
Var
   i : Integer;
   nArchivo : String;
begin
     For i:=0 to DTexto.RecordCount-1 Do  
     Begin
          Datos.AQ_Edit.Close;
          Datos.AQ_Edit.Sql.Clear;
          Datos.AQ_Edit.SQL.Add('Insert Into Horario (Hor_Tipo, Per_Nro, Hor_Fecha)');
          Datos.AQ_Edit.SQL.Add('Values (:v01, :v02, :v03)');
          Datos.AQ_Edit.Parameters[0].Value := DTexto.fieldbyname('Tipo').AsString;
          Datos.AQ_Edit.Parameters[1].Value := IntToStr(StrToInt(DTexto.FieldByName('Ficha').asString));
          Datos.AQ_Edit.Parameters[2].Value := DTexto.fieldbyname('cFecha').AsString; // Aqui tenia otro proceso.. pero no viene al caso explicarlo
          Datos.AQ_Edit.ExecSQL;
          DTexto.Next;
     End;
     DTexto.Active   := False;
 
// Aqui renombro el archivo para que despues no lo encuentre y no tenga que cargar los eventos nuevamente...
     RenameFile(Concat(Label1.Caption,'\',Archivo.Text),ChangeFileExt(Concat(Label1.Caption,'\',Archivo.T  ext),'.ok'));

Espero que esto te sirva...


Salu2
__________________
BlueSteel

Última edición por BlueSteel fecha: 03-04-2008 a las 15:44:29.
Responder Con Cita