elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 09:08  


Tema destacado: [Overclocking] Récords de overclock del foro

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo, raul338)
| | |-+  Texto a arrays [SOLUCIONADO]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Texto a arrays [SOLUCIONADO]  (Leído 775 veces)
rob1104


Desconectado Desconectado

Mensajes: 326


Usuario común


Ver Perfil
Texto a arrays [SOLUCIONADO]
« en: 5 Abril 2011, 18:20 »

Hola a todos, necesito un poco de orientación en un proceso que no puedo solucionar.

Resulta que tengo un archivo de texto con miles de lineas con el siguiente formato (este lo genera un sistema que no puedo cambiar):
Citar
00304-001    1042X250X131MM(150)51B/CK *750 84-0070      00304-001            1,440   1           600   2           300         1,740
00304-002    507X257X131(150)51 B/C K *450  84-0061      00304-002                0   4         1,050   1           150           900
00304-003    507X252X258MM (150)51BCK *450  84-0020      00304-003            1,200   0             0   2           300           900
00304-006    1042X507X256(75)51 B/C K *225  84-0058      00304-006              402   0             0   0             0           402
00304-012    1500X793 (200) 32 C K  *400    84-0146      00304-012              730   0             0   1           200           530

La idea es pasarlos a un listview para luego trabajar con los datos. El detalle es que no logro separar cada linea en las 9 columnas, ya que la separación no es un tab, si no que son espacios variables, por lo tanto split() no me sirvió.

Este es el codigo que tengo, pero me lo carga todo en una sola columna, ya que no me respeta el split:
Código
Dim linea As String
   Dim division() As String
   Dim i As Integer
   Dim r As String
   Dim subE As ListItem
   Open "C:\INV320.TXT" For Input As #1
   While Not EOF(1)
       Line Input #1, linea
       division = Split(linea)
       r = Mid(division(0), 1, 1)
       If r = "0" Then
           Set subE = ListView1.ListItems.Add(, , division(0))
           For i = 1 To UBound(division)
               subE.SubItems(i) = division(i)
           Next
       End If
   Wend
   Close #1

Y esta es la salida:
 

Saludos


« Última modificación: 7 Abril 2011, 06:55 por rob1104 » En línea



Psyke1
Wiki

Desconectado Desconectado

Mensajes: 1.005



Ver Perfil WWW
Re: Texto a arrays
« Respuesta #1 en: 5 Abril 2011, 19:08 »

*Una forma sería usando [Bucle + Replace()] en cada linea para que te quede todo separado por un solo espacio.
*Otra sería usando RegExp, con algo así, si no me equivoco:
Código:
\s*(\S+)\s*


A parte de eso, usas mal el Split(), si te fijas, no pusiste delimitador. :rolleyes:

DoEvents! :P



« Última modificación: 5 Abril 2011, 19:13 por Mr.Frog™ » En línea

rob1104


Desconectado Desconectado

Mensajes: 326


Usuario común


Ver Perfil
Re: Texto a arrays
« Respuesta #2 en: 5 Abril 2011, 19:28 »

Gracias por responder, intentaré lo de las Exp Reg que no se me habia ocurrido.

Lo del split(), lo use de diferentes formas, pero al ultimo lo deje asi al copiar el codigo. Pero de la forma que lo tenia era:
division = Split(linea,vbTab)

Bueno, probaré y les cuento. Gracias
En línea



seba123neo
Moderador
***
Desconectado Desconectado

Mensajes: 3.214



Ver Perfil WWW
Re: Texto a arrays
« Respuesta #3 en: 6 Abril 2011, 01:42 »

esto es facil, el archivo tiene definido un largo fijo para cada campo, con un Mid() lo solucionas, o sea desde la posicion 0 a la 13 tenes el codigo, de la 14 a la 25 la descripcion etc...con eso ya lo tenes.

saludos.
En línea

Mucha gente, especialmente la ignorante desea castigarte por decir la verdad, por ser correcto, por ser tú. Nunca te disculpes por ser correcto, o por estar años delante de tu tiempo.
Si estas en lo cierto, y lo sabes, que hable tu razón. Incluso si eres una minoria de uno solo, la verdad sigue siendo la verdad. M. Gandhi
Tenient101

Desconectado Desconectado

Mensajes: 127


Ver Perfil
Re: Texto a arrays
« Respuesta #4 en: 6 Abril 2011, 02:34 »

Primero elimina los dobles espacios  :P
Código
Do While cbool(instr(MisDatos,"  ")) ' mientras haya doble espacio
MisDatos = replace(Misdatos,"  "," ")  'remplazamos los dobles espacios por uno solo
loop
Partes() = Split(MisDatos,vbnewline) ' primero se parten por lineas
for i = 0 to ubound(Partes()) - 1
SubPartes() = Split(Partes(i)," ") 'partimos por los espacios y tenemos los datos...
next
 

En línea
rob1104


Desconectado Desconectado

Mensajes: 326


Usuario común


Ver Perfil
Re: Texto a arrays
« Respuesta #5 en: 6 Abril 2011, 17:28 »

Muchas gracias a todos.

Logré solucionarlo gracias a la idea de seba123neo.

Al final el codigo quedó asi:
       
Código
Dim linea As String, archivo As String, division(6) As String, aux As String
       Dim i As Integer
       Dim subE As ListItem
       archivo = Trim(OFName.lpstrFile)
       Open archivo For Input As #1
       While Not EOF(1)
           Line Input #1, linea
           aux = Mid(linea, 1, 1)
           division(0) = Trim(Mid(linea, 1, 13)) 'Caja
           division(1) = Trim(Mid(linea, 14, 31)) 'Descripcion
           division(2) = Trim(Mid(linea, 45, 13)) 'Caja/Cliente
           division(3) = Trim(Mid(linea, 59, 13)) 'Producto
           division(4) = Trim(Mid(linea, 72, 13)) 'Exi. Actual
           division(5) = Trim(Mid(linea, 85, 20)) 'Peso
           division(6) = Trim(Mid(linea, 106, 20)) 'Precio
           
           If aux = "0" Then
               Set subE = lv.ListItems.Add(, , division(0))
               For i = 1 To UBound(division)
                   subE.SubItems(i) = division(i)
               Next
           End If
       Wend
       Close #1

Saludos
En línea



Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con arrays [codigo sencillo] (Solucionado)
Programación C/C++
[Decoded] 4 472 Último mensaje 4 Junio 2009, 02:25
por [Decoded]
como utilizo system con arrays y texto normal?
Programación C/C++
yiti007 4 594 Último mensaje 16 Enero 2010, 01:02
por yiti007
[BATCH] Duda sobre ¿Arrays? [Solucionado]
Scripting
Karcrack 3 1,491 Último mensaje 4 Febrero 2011, 15:44
por Edu
Duda con arrays dentro de arrays
PHP
Servia 11 1,955 Último mensaje 10 Marzo 2011, 09:04
por Servia
[Solucionado] Comparando 2 arrays
PHP
aaronduran2 2 452 Último mensaje 11 Febrero 2012, 08:09
por aaronduran2
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines