Hola mundo ;D
bueno e me cruzado con un problemon que tengo horas tratando de saber que pasa :P
miren el codigo alguien sabe que pasaaaa!?
Private declare sub RtlMoveMemory lib "Kernel32.dll" (byval dest as long , Byval Src as long, Byval ln as long)
private type MY
Str1 as string
Str2 as string
end type
sub main()
dim NEW(50) as byte
dim M as MY
M.Str1 = "ABCD"
M.Str2 = "EFGH"
rtlmovememory varptr(new(0)), varptr(M) , lenb(M)
end sub
los valores del array son:
116,153,61,5
y lo que realmente me esperaba era:
65,66,67,68 :P
luego hice esto:
dim A() as byte
A = M.Str1 '// la misma estructura
y tambien esto, y me resulto mas extraño O.o
Private Sub Form_Load()
Dim M As MY
M.A = 50000: M.B = 4000
M.C = "HELLO"
Debug.Print Len(M.A) 4
Debug.Print Len(M.B) 2
Debug.Print Len(M.C) 5
Debug.Print "------" 11
Debug.Print LenB(M.A) 4
Debug.Print LenB(M.B) 2
Debug.Print LenB(M.C) 10
Debug.Print "------" ' 16
Debug.Print Len(M) 10
Debug.Print LenB(M) 12!!!
End Sub
alguien sabe que pasa ? mas que todo lo que quiero es aprender ;D y saber que pasa :P aunque me imagino
que es VB :-\ que tristesa :-\
las estructuras de C/C++ es la misma teoria que la de VB6... si las variables NO TIENEN LONGITUD por ejemplo una string... se convertira en un apuntador... me da un poco de pereza volver a explicarlo... busca un tema similar (lo explique a detalle) donde explico que onda y el por que de cada cosa...
Dulces Lunas!¡.
Es cierto!! :xD como se me habria olvidado x3
en las estrucuturas las string son punteros xP
Private declare sub RtlMoveMemory lib "Kernel32.dll" (byval dest as long , Byval Src as long, Byval ln as long)
private type MY
Str1 as string
Str2 as string
end type
sub main()
dim NEW(50) as byte
dim M as MY
M.Str1 = "ABCD"
M.Str2 = "EFGH"
rtlmovememory varptr(new(0)), varptr(M) , lenb(M)
end sub
entonces en este codigo lo que realmente estoy copiando a "New" son los punteros de las string no? x)
hice este :P
Private declare sub RtlMoveMemory lib "Kernel32.dll" (byval dest as long , Byval Src as long, Byval ln as long)
private type MY
A as integer
Str1 as string
C as long
end type
sub main()
dim NEW(50) as byte
dim M as MY
M.A = 4000
M.Str1 = "ABCD"
M.C = 45000
rtlmovememory varptr(new(0)), varptr(M) , lenb(M)
end sub
lo raro es el array queda asi con esos valores :P
160
15
0
0
220
64
52
5
200
175
esta raro :P no puede ser que todos sean punteros :| o si
Mil gracias BlackZeroX ;D
Vb6 trabaja de un modo Horroroso... pero ten encuenta esto...
Array (De cual quier tipo) y String sin longitud inicial seran considerados como punteros internos (en la memoria claro)...
Dulces Lunas!¡.
Guardado ;)
gracias Zero ;D