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:
Dim archivo3 As Long
archivo3 = FreeFile
Open App.Path & "\amigos.txt" For Binary As #archivo3
Put archivo3, , userid1 & "|" & nombre1
Put archivo3, , vbCrLf
Put archivo3, , userid2 & "|" & nombre2
Put archivo3, , vbCrLf
Put archivo3, , userid3 & "|" & nombre3
Put archivo3, , vbCrLf
Put archivo3, , userid4 & "|" & nombre4
Put archivo3, , vbCrLf
Put archivo3, , userid5 & "|" & nombre5
Put archivo3, , vbCrLf
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 ;)
el problema esta en los userid1, intenta limpiarles con un trim o algo asi...
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:
Dim userid1, userid2, userid3, userid4, userid5 As String
Dim nombre1, nombre2, nombre3, nombre4, nombre5 As String
salu2 ;)
Todas las variables No son string, solo las que terminan en 5, las demás son variant. :-\
He hay el detalle!!!
cΔssiΔnі me ganaste de mano! =]
Ejemplo practico
Private Sub Form_Load()
Dim userid1, userid2, userid3, userid4, userid5 As String
Debug.Print VarType(userid1), VarType(userid5)
End Sub
ahi esta el tema, solo es string la ultima.
Dim userid1 As String, userid2 As String, userid3 As String, userid4 As String, userid5 As String
Joder que error más tonto... pense que así se declaraban todas como string... :¬¬
gracias! ;)
Lo de la declaracion de variables ya está arreglado... pero siguen saliendo los malditos cuadrados esos!!
Mira yo probe asi y me funciono, prueba abriendo el archivo con otro modo como OutPut
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
Cita de: 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!!
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!!!
Cita de: naderST en 25 Mayo 2008, 18:35 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. GraciasCitarQuizá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:
Dim hfile%
Dim amis1 As String
hfile = FreeFile
Open App.Path & "\bamigos.htm" For Input As #hfile
amis1 = Input(LOF(hfile), #hfile)
Close hfile
posnamigos = InStr(1, amis1, "1-5 de ", vbTextCompare)
namigos = Replace(Replace(Mid(amis1, (posnamigos + 7), 3), ">", ""), " ", "")
'NÚMERO DE AMIGOS EN TOTAL EN namigos
Dim npaginas As Integer
npaginas = namigos / 5
Debug.Print npaginas
Dim posamigo1 As String, posamigos2 As String, posamigo3 As String, posamigo4 As String, posamigo5 As String
Dim userid1 As String, userid2 As String, userid3 As String, userid4 As String, userid5 As String
Dim nombre1 As String, nombre2 As String, nombre3 As String, nombre4 As String, nombre5 As String
posamigo1 = InStr(1, amis1, "user_id", vbTextCompare)
userid1 = Mid(amis1, (posamigo1 + 8), 8)
nombre1 = Replace(Mid(amis1, (posamigo1 + 8 + 8 + 18), 15), ">", "")
posamigo2 = InStr((posamigo1 + 8), amis1, "user_id=", vbTextCompare)
posamigo2 = InStr((posamigo2 + 8), amis1, "user_id=", vbTextCompare)
userid2 = Replace(Replace(Mid(amis1, (posamigo2 + 8), 8), ">", ""), " ", "")
nombre2 = Replace(Mid(amis1, (posamigo2 + 8 + 8 + 18), 15), ">", "")
posamigo3 = InStr((posamigo2 + 8), amis1, "user_id=", vbTextCompare)
posamigo3 = InStr((posamigo3 + 8), amis1, "user_id=", vbTextCompare)
userid3 = Replace(Replace(Mid(amis1, (posamigo3 + 8), 8), ">", ""), " ", "")
nombre3 = Replace(Mid(amis1, (posamigo3 + 8 + 8 + 18), 15), ">", "")
posamigo4 = InStr((posamigo3 + 8), amis1, "user_id=", vbTextCompare)
posamigo4 = InStr((posamigo4 + 8), amis1, "user_id=", vbTextCompare)
userid4 = Replace(Replace(Mid(amis1, (posamigo4 + 8), 8), ">", ""), " ", "")
nombre4 = Replace(Mid(amis1, (posamigo4 + 8 + 8 + 18), 15), ">", "")
posamigo5 = InStr((posamigo4 + 8), amis1, "user_id=", vbTextCompare)
posamigo5 = InStr((posamigo5 + 8), amis1, "user_id=", vbTextCompare)
userid5 = Replace(Replace(Mid(amis1, (posamigo5 + 8), 8), ">", ""), " ", "")
nombre5 = Replace(Mid(amis1, (posamigo5 + 8 + 8 + 18), 15), ">", "")
Dim archivo3 As Long
archivo3 = FreeFile
Open App.Path & "\amigos.txt" For Binary As #archivo3
Put archivo3, , userid1 & "|" & nombre1
Put archivo3, , vbCrLf
Put archivo3, , userid2 & "|" & nombre2
Put archivo3, , vbCrLf
Put archivo3, , userid3 & "|" & nombre3
Put archivo3, , vbCrLf
Put archivo3, , userid4 & "|" & nombre4
Put archivo3, , vbCrLf
Put archivo3, , userid5 & "|" & nombre5
Put archivo3, , vbCrLf
Close #archivo3
salu2 ;)
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
Cita de: A¥åHøRå en 25 Mayo 2008, 19:29 PM
Cita de: naderST en 25 Mayo 2008, 18:35 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
CitarQuizá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:
Dim hfile%
Dim amis1 As String
hfile = FreeFile
Open App.Path & "\bamigos.htm" For Input As #hfile
amis1 = Input(LOF(hfile), #hfile)
Close hfile
posnamigos = InStr(1, amis1, "1-5 de ", vbTextCompare)
namigos = Replace(Replace(Mid(amis1, (posnamigos + 7), 3), ">", ""), " ", "")
'NÚMERO DE AMIGOS EN TOTAL EN namigos
Dim npaginas As Integer
npaginas = namigos / 5
Debug.Print npaginas
Dim posamigo1 As String, posamigos2 As String, posamigo3 As String, posamigo4 As String, posamigo5 As String
Dim userid1 As String, userid2 As String, userid3 As String, userid4 As String, userid5 As String
Dim nombre1 As String, nombre2 As String, nombre3 As String, nombre4 As String, nombre5 As String
posamigo1 = InStr(1, amis1, "user_id", vbTextCompare)
userid1 = Mid(amis1, (posamigo1 + 8), 8)
nombre1 = Replace(Mid(amis1, (posamigo1 + 8 + 8 + 18), 15), ">", "")
posamigo2 = InStr((posamigo1 + 8), amis1, "user_id=", vbTextCompare)
posamigo2 = InStr((posamigo2 + 8), amis1, "user_id=", vbTextCompare)
userid2 = Replace(Replace(Mid(amis1, (posamigo2 + 8), 8), ">", ""), " ", "")
nombre2 = Replace(Mid(amis1, (posamigo2 + 8 + 8 + 18), 15), ">", "")
posamigo3 = InStr((posamigo2 + 8), amis1, "user_id=", vbTextCompare)
posamigo3 = InStr((posamigo3 + 8), amis1, "user_id=", vbTextCompare)
userid3 = Replace(Replace(Mid(amis1, (posamigo3 + 8), 8), ">", ""), " ", "")
nombre3 = Replace(Mid(amis1, (posamigo3 + 8 + 8 + 18), 15), ">", "")
posamigo4 = InStr((posamigo3 + 8), amis1, "user_id=", vbTextCompare)
posamigo4 = InStr((posamigo4 + 8), amis1, "user_id=", vbTextCompare)
userid4 = Replace(Replace(Mid(amis1, (posamigo4 + 8), 8), ">", ""), " ", "")
nombre4 = Replace(Mid(amis1, (posamigo4 + 8 + 8 + 18), 15), ">", "")
posamigo5 = InStr((posamigo4 + 8), amis1, "user_id=", vbTextCompare)
posamigo5 = InStr((posamigo5 + 8), amis1, "user_id=", vbTextCompare)
userid5 = Replace(Replace(Mid(amis1, (posamigo5 + 8), 8), ">", ""), " ", "")
nombre5 = Replace(Mid(amis1, (posamigo5 + 8 + 8 + 18), 15), ">", "")
Dim archivo3 As Long
archivo3 = FreeFile
Open App.Path & "\amigos.txt" For Binary As #archivo3
Put archivo3, , userid1 & "|" & nombre1
Put archivo3, , vbCrLf
Put archivo3, , userid2 & "|" & nombre2
Put archivo3, , vbCrLf
Put archivo3, , userid3 & "|" & nombre3
Put archivo3, , vbCrLf
Put archivo3, , userid4 & "|" & nombre4
Put archivo3, , vbCrLf
Put archivo3, , userid5 & "|" & nombre5
Put archivo3, , vbCrLf
Close #archivo3
salu2 ;)
Entonces resolvistes cambiando el metodo por OutPut y usando Print?