elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Crear varios txt a partir de 1 dependiendo del valor de un dato en el registro
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Crear varios txt a partir de 1 dependiendo del valor de un dato en el registro  (Leído 4,999 veces)
agmen

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Crear varios txt a partir de 1 dependiendo del valor de un dato en el registro
« en: 22 Septiembre 2010, 21:22 pm »

Hola,
tengo un problema..
necesito recorrer un txt  llamado base.txt con los siguientes datos

1000000CARMEN ROSA ALVAREZ          10         0       46600       020100830
1000001JOSE LUIS VALDEZ CHOQUE     10      14500   5002010072820100728
1000002MIGUELINA NAVARRO TAPIA     20        0        27200       020100830
1000003MARIA ARANCIBIA                   40        0        17000       020100830

si el valor despues del nombre es 10 debe copiar la linea completa con el mismo formato y crear un txt nuevo con los registros que solo contengan el valor 10. asi para los con valores 20 y 40
ejemplo del txt nuevo

nuevo10.txt

000000CARMEN ROSA ALVAREZ          10         0       46600       020100830
1000001JOSE LUIS VALDEZ CHOQUE     10      14500   5002010072820100728

nuevo20.txt
1000002MIGUELINA NAVARRO TAPIA     20        0        27200       020100830

nuevo40.txt
1000003MARIA ARANCIBIA                   40        0        17000       020100830

espero me puedan ayudar
PD.: los registros son de largo fijo
Gracias :D


« Última modificación: 22 Septiembre 2010, 22:04 pm por agmen » En línea

Psyke1
Wiki

Desconectado Desconectado

Mensajes: 1.089



Ver Perfil WWW
Re: Crear varios txt a partir de 1 dependiendo del valor de un dato en el registro
« Respuesta #1 en: 23 Septiembre 2010, 02:27 am »

Se me ocurre:
*Quitas los dobles espacios hasta dejarlo con solo uno de separacion.
*Usas Split utilizando el espacio como delimitador y dependiendo del numero que haya lo guardas en uno o otro archivo...

DoEvents! :P


En línea

Elemental Code


Desconectado Desconectado

Mensajes: 622


Im beyond the system


Ver Perfil
Re: Crear varios txt a partir de 1 dependiendo del valor de un dato en el registro
« Respuesta #2 en: 23 Septiembre 2010, 04:36 am »

Código:
1000000CARMEN ROSA ALVAREZ        |10   |       0  |      46600       020100830
1000001JOSE LUIS VALDEZ CHOQUE    |10   |   14500  |      5002010072820100728
1000002MIGUELINA NAVARRO TAPIA    |20   |       0  |      27200       020100830
1000003MARIA ARANCIBIA            |40   |       0  |      17000       020100830


escribilo asi.
usa el comando split con | como separador y usa trim para sacarle los espacios.

Entendes?
En línea

I CODE FOR $$$
Programo por $$$
Hago tareas, trabajos para la facultad, lo que sea en VB6.0

Mis programas
Sanlegas

Desconectado Desconectado

Mensajes: 131


https://fbcdn-sphotos-e-a.akamaihd.net/hphotos-ak-


Ver Perfil
Re: Crear varios txt a partir de 1 dependiendo del valor de un dato en el registro
« Respuesta #3 en: 23 Septiembre 2010, 06:55 am »

aca te dejo un ejemplo
Código:
Dim N          As Integer
Dim I          As String
Dim Partes()   As String

I = "1000000CARMEN ROSA ALVAREZ          10         0       46600       020100830"

Do While InStr(I, "  ")      ' mientras haya mas de dos espacios
I = Replace$(I, "  ", " ")  ' los eliminamos
Loop

MsgBox I                       ' mostramos la cadena ya sin dobles espacios

Partes() = Split(I, " ")     ' la partimos por un espacio

For N = UBound(Partes()) To 1 Step -1
 MsgBox Partes(N)                              ' mostramos todas las partes
Next

ya tu lo modificas a tus necesidades  ;)
« Última modificación: 23 Septiembre 2010, 06:57 am por Tenient101 » En línea

BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: Crear varios txt a partir de 1 dependiendo del valor de un dato en el registro
« Respuesta #4 en: 23 Septiembre 2010, 07:18 am »

.
Antes que nada me podrias dejar un ejemplo de tu TXT  PARA DESCARGAR quiero ver el formato...!¡.

OTRAS cosas, POuedes dejar X cantidad de espacios entre "CALUMNAS" o usar Tabulaciones, asi sabras que estas leyendo en X Columna mas facil y sin complicarte la Vida...

Bueno solo suponiendo... Si es 10 entonces se me ocurre hacer algo asi... (Quedaria mejor con vbtab que espacios...)

Código
  1.  
  2. Option Explicit
  3. Option Base 0
  4.  
  5. Private Sub Form_Load()
  6. Dim Str_RetArrayList$()
  7. Dim Li&
  8. Const StrFile$ = "C:\aaa.txt"
  9.  
  10.    Str_RetArrayList$() = Get_DataLineFromFile(StrFile)
  11.    If (Not Str_RetArrayList$()) = -1 Then Exit Sub
  12.  
  13.    For Li& = LBound(Str_RetArrayList$()) To UBound(Str_RetArrayList$())
  14.        'If InStr(1, Str_RetArrayList$(li&), vbtab & "10" & vbtab  ) > 0 Then
  15.        If InStr(1, Str_RetArrayList$(Li&), "  10  ") > 0 Then
  16.            MsgBox "Se exporta la linea " & Li& + 1
  17.        End If
  18.    Next
  19.  
  20. End Sub
  21.  
  22. '   //  Este metodo usara basta cantidad de Memoria... sería mejor un Do ... Loop y leyendo linea a linea y evaluarla...
  23. Public Function Get_DataLineFromFile(ByVal StrFile As String) As String()
  24. Dim TmpStrLine$, Lff%
  25.  
  26.    If Dir(StrFile, vbArchive) = "" Then Exit Function
  27.    If Not GetAttr(StrFile) = vbArchive Then Exit Function
  28.  
  29.    Lff% = FileSystem.FreeFile%
  30.    Open StrFile For Binary As Lff%
  31.        TmpStrLine$ = Space$(LOF(Lff%))
  32.        Get Lff%, , TmpStrLine$
  33.    Close Lff%
  34.  
  35.    Get_DataLineFromFile = Split(TmpStrLine$, vbNewLine)
  36.  
  37. End Function
  38.  
  39.  

NOTA: Estructura mas el formato...

Dulce Infierno Lunar!¡.
« Última modificación: 23 Septiembre 2010, 07:21 am por BlackZeroX » En línea

The Dark Shadow is my passion.
raul338


Desconectado Desconectado

Mensajes: 2.633


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: Crear varios txt a partir de 1 dependiendo del valor de un dato en el registro
« Respuesta #5 en: 23 Septiembre 2010, 15:47 pm »

Una pregunta, todos los registros son del mismo largo? o todos los que terminan en el mismo archivo terminan con el mismo largo?

Las columnas son de ancho fijo? si es asi con simples Mid se arreglan, sino, ya te dieron un par de soluciones
En línea

79137913


Desconectado Desconectado

Mensajes: 1.169


4 Esquinas


Ver Perfil WWW
Re: Crear varios txt a partir de 1 dependiendo del valor de un dato en el registro
« Respuesta #6 en: 23 Septiembre 2010, 15:54 pm »

HOLA!!!

Mira, segun lo que lei estan con ancho fijo las columnas entonces, suponiendo que "caracter inicio" es el numero donde se escribe el 10 el 20 el 30 o el 40:



Código
  1. Dim a As String
  2.    Open App.Path & "\base.txt" For Input As #1
  3.    Do Until EOF(1)
  4.    Input #1, a
  5.        If Mid(a, "caracter inicio", 2) = "10" Then
  6.            'GUARDA EN NUEVO10.TXT
  7.        ElseIf Mid(a, "caracter inicio", 2) = "20" Then
  8.            'GUARDA EN NUEVO20.TXT
  9.        ElseIf Mid(a, "caracter inicio", 2) = "30" Then
  10.            'GUARDA EN NUEVO30.TXT
  11.        ElseIf Mid(a, "caracter inicio", 2) = "40" Then
  12.            'GUARDA EN NUEVO40.TXT
  13.        End If
  14.    Loop
  15. Close #1

GRACIAS POR LEER!!!
En línea

"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

 79137913                          *Shadow Scouts Team*
agmen

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Re: Crear varios txt a partir de 1 dependiendo del valor de un dato en el registro
« Respuesta #7 en: 24 Septiembre 2010, 14:50 pm »

GRACIAS A TODOS  los que escribieron XD, hoy entre solamente a escribir el codigo fuente con el cual resolvi elproblema

Private Sub Command1_Click()
' Esta variable contendrá el path del archivo que queremos acceder
Dim Archivo As String
' Linea almacenará los datos del archivo "Historia.txt"
Dim Linea As String
' Asignamos a la variable  Archivo la ruta correcta. El objeto _
App.Path nos devuelve el directorio donde se encuentra nuesta _
aplicación. Luego le agregamos la barra invertida y el nombre _
del archivo.

'Archivo = App.Path & "\" & "Historia.txt"
Archivo = App.Path & "\" & "Historia.txt"

' Abrimos el archivo con la variable Archivo, y como el acceso será de lectura _
utilizamos el modo Input seguido del número de archivo "#1"
Open Archivo For Input As #1

' Creamos un bucle para controlar que después de llegar al final del archivo _
la sentencia Input, no continue leyendo y se produzca un error en tiempo de eje _
cucíon. Para ello utilizamos la condición Not EoF(1), que traducido quiere decir _
mientras no llegue al final del archivo, que continúe leyendo línea por línea. _
' Dentro del bucle asignamos al control Text1 el valor de la variable Linea mas _
el contenido que ya estaba guardado en el text box, Por que de lo contrario, el text Box _
solo mostraría el último contenido de la variable "Linea"
Dim tipo As String

While Not EOF(1)
 Line Input #1, Linea
    tipo = Mid$(Linea, 78, 2)
 Select Case tipo
    Case "10"
       EscriveLog Linea, "archivo10"
    Case "20"
       EscriveLog Linea, "archivo20"
    Case "30"
       EscriveLog Linea, "archivo30"
    Case "40"
       EscriveLog Linea, "archivo40"
    Case "50"
       EscriveLog Linea, "archivo5060"
    Case "60"
       EscriveLog Linea, "archivo5060"
    Case "70"
       EscriveLog Linea, "archivo70"
    End Select

Wend

' Cerramos el archivo
Close #1

End Sub

Public Function EscriveLog(ByRef Texto As String, ByRef tipo As String) ', ByRef xTipo As Byte)
    Dim strFile As String
    Dim fn As Long
    Dim strLog As String
    strFile = App.Path & "\" & tipo & ".txt"
    fn = FreeFile
    strLog = Texto
    Open strFile For Append As fn
        Print #fn, strLog
    Close fn
End Function

GRACIAS DE TODAS MANERAS XD
En línea

seba123neo
Moderador
***
Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: Crear varios txt a partir de 1 dependiendo del valor de un dato en el registro
« Respuesta #8 en: 26 Septiembre 2010, 22:33 pm »

como te dijeron si las columnas son de ancho fijo, con un simple mid vas sacando los campos correspondiente.

otra opcion es crearte un schema.ini con la estrucutura de los campos del .txt y con el driver de texto de windows, podes hacer SELECT como si fuera una tabla de base de datos...

saludos.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Batch] Crear varios txt a partir de otro txt [Solucionado]
Scripting
bjeli1980 8 15,817 Último mensaje 20 Septiembre 2012, 05:45 am
por Eleкtro
¿Como recuperar un dato de varios divs haciendo Click ? - javascript - Jquey « 1 2 »
Desarrollo Web
Lupin 14 8,127 Último mensaje 31 Mayo 2011, 23:42 pm
por Lupin
Crear link con dato de un registro de una bd « 1 2 3 4 »
PHP
Brian1511 30 8,838 Último mensaje 25 Julio 2013, 19:29 pm
por EFEX
Ayuda crear varios archivo bat a partir de un solo bat
Scripting
ADV 2 2,428 Último mensaje 5 Marzo 2017, 22:14 pm
por ADV
Cambiar un valor de un dato en un Jframe desde un internalframe
Java
meaf75 0 2,069 Último mensaje 12 Agosto 2017, 21:01 pm
por meaf75
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines