Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: FaiF (A¥åHøRå) en 25 Mayo 2008, 17:08 pm



Título: Simbolos raros al escribir en un TXT
Publicado por: FaiF (A¥åHøRå) en 25 Mayo 2008, 17:08 pm
Hola,

Estoy creando un simple programa en VB.
El caso es que voy a grabar unos datos en un TXT pero no se porqué al grabarse me quedan unos símbolos extraños delante de cada línea... le he dado mil vueltas y no se por qué pasa.

El código que he escrito es este:

Código
  1. Dim archivo3 As Long
  2. archivo3 = FreeFile
  3. Open App.Path & "\amigos.txt" For Binary As #archivo3
  4. Put archivo3, , userid1 & "|" & nombre1
  5. Put archivo3, , vbCrLf
  6. Put archivo3, , userid2 & "|" & nombre2
  7. Put archivo3, , vbCrLf
  8. Put archivo3, , userid3 & "|" & nombre3
  9. Put archivo3, , vbCrLf
  10. Put archivo3, , userid4 & "|" & nombre4
  11. Put archivo3, , vbCrLf
  12. Put archivo3, , userid5 & "|" & nombre5
  13. Put archivo3, , vbCrLf
  14. Close #archivo3

Y el archivo resultante queda así:
Citar
  59805153|hahshs sjsjs
  59636787|jsjs jsjsj
  59665553|jsjsjs kflfkf
  59705016|oekeoe jdkd
60005630|Jaime jidixkx

Además es rarísimo que en la última línea no pase.

¿Qué es lo que estoy haciendo mal?

salu2  ;)


Título: Re: Simbolos raros al escribir en un TXT
Publicado por: Kizar en 25 Mayo 2008, 17:19 pm
el problema esta en los userid1, intenta limpiarles con un trim o algo asi...


Título: Re: Simbolos raros al escribir en un TXT
Publicado por: FaiF (A¥åHøRå) en 25 Mayo 2008, 17:25 pm
He probado con los Trim y también he probado a solo guardar los "nombre*" y sigue ocurriendo lo mismo.

Por si sirve de algo todas las variables son strings:

Código
  1. Dim userid1, userid2, userid3, userid4, userid5 As String
  2. Dim nombre1, nombre2, nombre3, nombre4, nombre5 As String

salu2  ;)


Título: Re: Simbolos raros al escribir en un TXT
Publicado por: cassiani en 25 Mayo 2008, 17:31 pm
Todas las variables No son string, solo las que terminan en 5, las demás son variant.  :-\

He hay el detalle!!!


Título: Re: Simbolos raros al escribir en un TXT
Publicado por: cobein en 25 Mayo 2008, 17:33 pm
cΔssiΔnі me ganaste de mano! =]

Ejemplo practico

Código:
Private Sub Form_Load()
    Dim userid1, userid2, userid3, userid4, userid5 As String

    Debug.Print VarType(userid1), VarType(userid5)
End Sub


Título: Re: Simbolos raros al escribir en un TXT
Publicado por: Kizar en 25 Mayo 2008, 17:33 pm
ahi esta el tema, solo es string la ultima.
Código:
Dim userid1 As String, userid2 As String, userid3 As String, userid4 As String, userid5 As String


Título: Re: Simbolos raros al escribir en un TXT
Publicado por: FaiF (A¥åHøRå) en 25 Mayo 2008, 17:36 pm
Joder que error más tonto... pense que así se declaraban todas como string...  :¬¬

gracias!  ;)


Título: Re: Simbolos raros al escribir en un TXT
Publicado por: FaiF (A¥åHøRå) en 25 Mayo 2008, 17:50 pm
Lo de la declaracion de variables ya está arreglado... pero siguen saliendo los malditos cuadrados esos!!


Título: Re: Simbolos raros al escribir en un TXT
Publicado por: naderST en 25 Mayo 2008, 18:35 pm
Mira yo probe asi y me funciono, prueba abriendo el archivo con otro modo como OutPut

Código:
Option Explicit

Private Sub Form_Load()
Dim userid1 As String
Dim nombre1 As String
Dim archivo3 As Long

archivo3 = FreeFile
userid1 = "1"
nombre1 = "naderST"

Open "C:\amigos.txt" For Output As #archivo3
    Print #archivo3, userid1 & "|" & nombre1
Close #archivo3
End Sub


Título: Re: Simbolos raros al escribir en un TXT
Publicado por: cassiani en 25 Mayo 2008, 18:46 pm
Lo de la declaracion de variables ya está arreglado... pero siguen saliendo los malditos cuadrados esos!!

Yo lo probé de las dos formas, con la declaración mal echa y con lo contrario, obviamente con la mal elaborada salen los símbolos que dices, pero con las declaraciones como deben ser todo va perfecto, independientemente de si lo abres en modo binario o output o cualquier otro. Creo que hay alguna cosa que debes estar haciendo mal, porque sino no entiendo. Quizás si posteas el code completo tal y como lo tienes, nos des otra perspectiva.

Reitero: a mi me funciona perfecto!!!



Título: Re: Simbolos raros al escribir en un TXT
Publicado por: FaiF (A¥åHøRå) en 25 Mayo 2008, 19:29 pm
Mira yo probe asi y me funciono, prueba abriendo el archivo con otro modo como OutPut

Al ponerlo sustituir Print por Put ya no me aparecen esos simbolos extraños. Gracias

Citar
Quizás si posteas el code completo tal y como lo tienes, nos des otra perspectiva.
Es todo un jaleo porque de tantas pruebas que he hecho esta ilegible el código. Lo que hace es buscar unas cadenas de texto en un archivo y guardarlas en otro:

Código
  1. Dim hfile%
  2. Dim amis1 As String
  3. hfile = FreeFile
  4. Open App.Path & "\bamigos.htm" For Input As #hfile
  5. amis1 = Input(LOF(hfile), #hfile)
  6. Close hfile
  7.  
  8. posnamigos = InStr(1, amis1, "1-5 de ", vbTextCompare)
  9. namigos = Replace(Replace(Mid(amis1, (posnamigos + 7), 3), ">", ""), " ", "")
  10.  
  11. 'NÚMERO DE AMIGOS EN TOTAL EN namigos
  12.  
  13. Dim npaginas As Integer
  14. npaginas = namigos / 5
  15. Debug.Print npaginas
  16.  
  17. Dim posamigo1 As String, posamigos2 As String, posamigo3 As String, posamigo4 As String, posamigo5 As String
  18. Dim userid1 As String, userid2 As String, userid3 As String, userid4 As String, userid5 As String
  19. Dim nombre1 As String, nombre2 As String, nombre3 As String, nombre4 As String, nombre5 As String
  20.  
  21. posamigo1 = InStr(1, amis1, "user_id", vbTextCompare)
  22. userid1 = Mid(amis1, (posamigo1 + 8), 8)
  23. nombre1 = Replace(Mid(amis1, (posamigo1 + 8 + 8 + 18), 15), ">", "")
  24.  
  25. posamigo2 = InStr((posamigo1 + 8), amis1, "user_id=", vbTextCompare)
  26. posamigo2 = InStr((posamigo2 + 8), amis1, "user_id=", vbTextCompare)
  27. userid2 = Replace(Replace(Mid(amis1, (posamigo2 + 8), 8), ">", ""), " ", "")
  28. nombre2 = Replace(Mid(amis1, (posamigo2 + 8 + 8 + 18), 15), ">", "")
  29.  
  30. posamigo3 = InStr((posamigo2 + 8), amis1, "user_id=", vbTextCompare)
  31. posamigo3 = InStr((posamigo3 + 8), amis1, "user_id=", vbTextCompare)
  32. userid3 = Replace(Replace(Mid(amis1, (posamigo3 + 8), 8), ">", ""), " ", "")
  33. nombre3 = Replace(Mid(amis1, (posamigo3 + 8 + 8 + 18), 15), ">", "")
  34.  
  35. posamigo4 = InStr((posamigo3 + 8), amis1, "user_id=", vbTextCompare)
  36. posamigo4 = InStr((posamigo4 + 8), amis1, "user_id=", vbTextCompare)
  37. userid4 = Replace(Replace(Mid(amis1, (posamigo4 + 8), 8), ">", ""), " ", "")
  38. nombre4 = Replace(Mid(amis1, (posamigo4 + 8 + 8 + 18), 15), ">", "")
  39.  
  40. posamigo5 = InStr((posamigo4 + 8), amis1, "user_id=", vbTextCompare)
  41. posamigo5 = InStr((posamigo5 + 8), amis1, "user_id=", vbTextCompare)
  42. userid5 = Replace(Replace(Mid(amis1, (posamigo5 + 8), 8), ">", ""), " ", "")
  43. nombre5 = Replace(Mid(amis1, (posamigo5 + 8 + 8 + 18), 15), ">", "")
  44.  
  45. Dim archivo3 As Long
  46. archivo3 = FreeFile
  47. Open App.Path & "\amigos.txt" For Binary As #archivo3
  48. Put archivo3, , userid1 & "|" & nombre1
  49. Put archivo3, , vbCrLf
  50. Put archivo3, , userid2 & "|" & nombre2
  51. Put archivo3, , vbCrLf
  52. Put archivo3, , userid3 & "|" & nombre3
  53. Put archivo3, , vbCrLf
  54. Put archivo3, , userid4 & "|" & nombre4
  55. Put archivo3, , vbCrLf
  56. Put archivo3, , userid5 & "|" & nombre5
  57. Put archivo3, , vbCrLf
  58. Close #archivo3
  59.  
  60.  

salu2  ;)


Título: Re: Simbolos raros al escribir en un TXT
Publicado por: Sai-To en 25 Mayo 2008, 19:38 pm
este problema es raro y no se sabe porque ocurre aveces :-\ a skullmaster123 tambien le pasa lo mismo y no ha logrado todavia arreglarlo!  :-\ pues segun el


Título: Re: Simbolos raros al escribir en un TXT
Publicado por: naderST en 26 Mayo 2008, 02:56 am
Mira yo probe asi y me funciono, prueba abriendo el archivo con otro modo como OutPut

Al ponerlo sustituir Print por Put ya no me aparecen esos simbolos extraños. Gracias

Citar
Quizás si posteas el code completo tal y como lo tienes, nos des otra perspectiva.
Es todo un jaleo porque de tantas pruebas que he hecho esta ilegible el código. Lo que hace es buscar unas cadenas de texto en un archivo y guardarlas en otro:

Código
  1. Dim hfile%
  2. Dim amis1 As String
  3. hfile = FreeFile
  4. Open App.Path & "\bamigos.htm" For Input As #hfile
  5. amis1 = Input(LOF(hfile), #hfile)
  6. Close hfile
  7.  
  8. posnamigos = InStr(1, amis1, "1-5 de ", vbTextCompare)
  9. namigos = Replace(Replace(Mid(amis1, (posnamigos + 7), 3), ">", ""), " ", "")
  10.  
  11. 'NÚMERO DE AMIGOS EN TOTAL EN namigos
  12.  
  13. Dim npaginas As Integer
  14. npaginas = namigos / 5
  15. Debug.Print npaginas
  16.  
  17. Dim posamigo1 As String, posamigos2 As String, posamigo3 As String, posamigo4 As String, posamigo5 As String
  18. Dim userid1 As String, userid2 As String, userid3 As String, userid4 As String, userid5 As String
  19. Dim nombre1 As String, nombre2 As String, nombre3 As String, nombre4 As String, nombre5 As String
  20.  
  21. posamigo1 = InStr(1, amis1, "user_id", vbTextCompare)
  22. userid1 = Mid(amis1, (posamigo1 + 8), 8)
  23. nombre1 = Replace(Mid(amis1, (posamigo1 + 8 + 8 + 18), 15), ">", "")
  24.  
  25. posamigo2 = InStr((posamigo1 + 8), amis1, "user_id=", vbTextCompare)
  26. posamigo2 = InStr((posamigo2 + 8), amis1, "user_id=", vbTextCompare)
  27. userid2 = Replace(Replace(Mid(amis1, (posamigo2 + 8), 8), ">", ""), " ", "")
  28. nombre2 = Replace(Mid(amis1, (posamigo2 + 8 + 8 + 18), 15), ">", "")
  29.  
  30. posamigo3 = InStr((posamigo2 + 8), amis1, "user_id=", vbTextCompare)
  31. posamigo3 = InStr((posamigo3 + 8), amis1, "user_id=", vbTextCompare)
  32. userid3 = Replace(Replace(Mid(amis1, (posamigo3 + 8), 8), ">", ""), " ", "")
  33. nombre3 = Replace(Mid(amis1, (posamigo3 + 8 + 8 + 18), 15), ">", "")
  34.  
  35. posamigo4 = InStr((posamigo3 + 8), amis1, "user_id=", vbTextCompare)
  36. posamigo4 = InStr((posamigo4 + 8), amis1, "user_id=", vbTextCompare)
  37. userid4 = Replace(Replace(Mid(amis1, (posamigo4 + 8), 8), ">", ""), " ", "")
  38. nombre4 = Replace(Mid(amis1, (posamigo4 + 8 + 8 + 18), 15), ">", "")
  39.  
  40. posamigo5 = InStr((posamigo4 + 8), amis1, "user_id=", vbTextCompare)
  41. posamigo5 = InStr((posamigo5 + 8), amis1, "user_id=", vbTextCompare)
  42. userid5 = Replace(Replace(Mid(amis1, (posamigo5 + 8), 8), ">", ""), " ", "")
  43. nombre5 = Replace(Mid(amis1, (posamigo5 + 8 + 8 + 18), 15), ">", "")
  44.  
  45. Dim archivo3 As Long
  46. archivo3 = FreeFile
  47. Open App.Path & "\amigos.txt" For Binary As #archivo3
  48. Put archivo3, , userid1 & "|" & nombre1
  49. Put archivo3, , vbCrLf
  50. Put archivo3, , userid2 & "|" & nombre2
  51. Put archivo3, , vbCrLf
  52. Put archivo3, , userid3 & "|" & nombre3
  53. Put archivo3, , vbCrLf
  54. Put archivo3, , userid4 & "|" & nombre4
  55. Put archivo3, , vbCrLf
  56. Put archivo3, , userid5 & "|" & nombre5
  57. Put archivo3, , vbCrLf
  58. Close #archivo3
  59.  
  60.  

salu2  ;)

Entonces resolvistes cambiando el metodo por OutPut y usando Print?