Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-07-2011
pelikno pelikno is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 95
Poder: 14
pelikno Va por buen camino
Ayuda con archivo .tmp

Resulta que tengo que leer un archivo que no se que es, la extension es .tmp
declare un textFile y cuando leo con readln(File,Str) ,me lee todo el contenido como string, un ejemplo es asi 2344323454NANINO#$A23442455987887NINODI#$A
el tema es que no puedo identificar que caracter es #$A ya que recorro el string


Código:
while tot <=  (Length(str)) do
     begin
     if str[tot] = '#$A' then
        begin
        tot:= tot + 3 ;
         memo1.Lines.Add(aux);
         aux:= '';

        end
        else
        begin
        int:= Ord(str[tot]) ;

        aux:=aux + str[tot];
        tot := tot + 1;
        end;
     end;
Asi recorro el string pero resulta que cuando pregunto por # no lo identifica directamente agrega '#$A' como si fuera un solo caracter.
el formato del archivo es
numerocuilOtros#$AnumerocuilOtros#$AnumerocuilOtros#$A
No puedo identificar el separador de los camposo sea que tipo de caracter es.
En el if probe con comparar con # y no funciono,pregunte por #$A y tampoco.
Supongo que es un cambio de parrafo o algo asi pero no lo puedo identificar.
Si lo abro con notepad me muestra un string con todos los datos de corrido y en cambio el Word me los separa y me coloca un campo por linea como si reconociera el cambio de linea que indica #$A.
Si alguien tiene alguna idea sera de mucha ayuda ya que no se tampoco si declare el archivo como textfile o file of byte, correctamente.
Gracias!!!
Responder Con Cita
  #2  
Antiguo 06-07-2011
Avatar de Lord Delfos
Lord Delfos Lord Delfos is offline
Miembro
 
Registrado: ene 2008
Ubicación: Tandil, Argentina
Posts: 558
Poder: 17
Lord Delfos Va por buen camino
¿Un salto de linea? Parece un enter de un sistema no-Windows. Delphi te lo está mostrando así porque es un caracter no imprimible (el 10, o $A, notación para hexadecimal A)

En Windows un salto de linea es #10#13. #10 solo es propio de ambientes Unix según entiendo.

Debe ser por eso que el readln te lee todo entero, porque no reconoce #10 como enter completo (salto de linea + retorno de carro).

Yo trataría de leer con otra función. Si mal no recuerdo, la clase TStringList tenía un método que te generaba una TStringList con texto separado por un separador que uno indicara (en tu caso el #10).

Espero te sirva.

Saludos.

EDIT: Quizás también te convendría abrir el archivo con un editor hexadecimal, para ver bien cómo es por dentro. La versión de prueba del WinHex es altamente recomendable.

Última edición por Lord Delfos fecha: 06-07-2011 a las 01:46:15.
Responder Con Cita
  #3  
Antiguo 06-07-2011
pelikno pelikno is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 95
Poder: 14
pelikno Va por buen camino
Cita:
Empezado por Lord Delfos Ver Mensaje
¿Un salto de linea? Parece un enter de un sistema no-Windows. Delphi te lo está mostrando así porque es un caracter no imprimible (el 10, o $A, notación para hexadecimal A)

En Windows un salto de linea es #10#13. #10 solo es propio de ambientes Unix según entiendo.

Debe ser por eso que el readln te lee todo entero, porque no reconoce #10 como enter completo (salto de linea + retorno de carro).

Yo trataría de leer con otra función. Si mal no recuerdo, la clase TStringList tenía un método que te generaba una TStringList con texto separado por un separador que uno indicara (en tu caso el #10).

Espero te sirva.

Saludos.

EDIT: Quizás también te convendría abrir el archivo con un editor hexadecimal, para ver bien cómo es por dentro. La versión de prueba del WinHex es altamente recomendable.
Gracias por tu ayuda, voy a ver que pasa pero espero mas ideas...
Responder Con Cita
  #4  
Antiguo 06-07-2011
pelikno pelikno is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 95
Poder: 14
pelikno Va por buen camino
WinHex

Lo pude abrir con win ex y lo que en delphi me tira #$A en WinHex me muestra un espacio en blanco. como puedo hacer para abrir ese hexadecimal desde delphi.
Responder Con Cita
  #5  
Antiguo 06-07-2011
pelikno pelikno is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 95
Poder: 14
pelikno Va por buen camino
Solucionado!!!

encontre la solucion gracias !!!
Código:
 Reset(myFile);
  Memory.Active:=true;

 
  while not Eof(myFile) do
  begin
    
    
    text:='';
    while length(text) < 21 do
    begin
      Read(myFile, letter) ;   
      text:=text + letter ;

    end;
    Read(myFile, letter);
    Memory.Append;    
    Memorycuil.Value :=copy(text,1,2)+'-'+copy(text,3,8)+'-'+copy(text,11,1);
    Memoryganancias.Value:=copy(text,12,2);
    Memoryiva.Value:=copy(text,14,2);
    Memorymonotibuto.Value:= copy(text,16,2);
    MemoryintegranteSo.Value:= copy(text,18,1);
    Memoryempleador.Value:=copy(text,19,1);
    MemoryactividadMono.Value:=copy(text,20,2);
    Memory.Post;
    end;
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
archivo de ayuda chm fer21unmsm Varios 9 03-12-2012 15:35:47
Ayuda con archivo except.inc boreg Lazarus, FreePascal, Kylix, etc. 4 15-02-2008 17:16:23
Archivo de ayuda. REHome Varios 0 27-12-2004 17:14:01
Archivo de ayuda con F1 Damisela API de Windows 1 17-05-2004 21:56:00
Archivo de ayuda .CHM Marina Varios 1 09-04-2004 10:32:37


La franja horaria es GMT +2. Ahora son las 13:29:29.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi