Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - BlackZeroX

#2451

Este codigo que les dejo me arreglo una duda que tenia la cual me la respondio Google a una liga interesante ( Almenos para mi xP )

intentaba hacer algo similar a esto:

Código (Vb) [Seleccionar]


Private Sub Form_Load()
Dim Args()          As Variant
    ReDim Args(0 To 1)
    Args(0) = "hola Mundo"
    Args(1) = "12"
    CallByName Me, "Mensaje", VbMethod, Args()
End Sub

Public Sub mensaje(mensaje As String, Optional hola As Long)
    MsgBox mensaje, vbOKOnly, hola
End Sub



pero no daba y google me respodio:

http://www.devx.com/tips/Tip/15422

Código (vb) [Seleccionar]


' Required for use in VB5!
Public Enum VbCallType
VbMethod = 1
VbGet = 2
VbLet = 4
VbSet = 8
End Enum

Public Function CallByNameEx(Obj As Object, _
ProcName As String, CallType As VbCallType, _
Optional vArgsArray As Variant)
Dim oTLI As Object
Dim ProcID As Long
Dim numArgs As Long
Dim i As Long
Dim v()

On Error GoTo Handler

Set oTLI = CreateObject("TLI.TLIApplication")
ProcID = oTLI.InvokeID(Obj, ProcName)

If IsMissing(vArgsArray) Then
CallByNameEx = oTLI.InvokeHook( _
Obj, ProcID, CallType)
End If

If IsArray(vArgsArray) Then
numArgs = UBound(vArgsArray)
ReDim v(numArgs)
For i = 0 To numArgs
v(i) = vArgsArray(numArgs - i)
Next i
CallByNameEx = oTLI.InvokeHookArray( _
Obj, ProcID, CallType, v)
End If
Exit Function

Handler:
Debug.Print Err.Number, Err.Description
End Function



con lo cual ahora el CallByName bueno mejor dicho CallByNameEx acepta ahora expresiones de este tipo:

Código (vb) [Seleccionar]


Call CallByNameEx(Me, "xx", VbMethod, x)
Call CallByNameEx(Me, "xx", VbMethod, Array(1, 2)) 
Result=CallByNameEx(Me, "xx", VbMethod, x)



siendo que antes array() o pasandole un vector a CallByName No servia

Código (Vb) [Seleccionar]


Private Sub Form_Load()
Dim Args()          As Variant
    ReDim Args(0 To 1)
    Args(0) = "hola Mundo"
    Args(1) = "12"
    CallByNameEx Me, "Mensaje", VbMethod, Args()
End Sub

Public Sub mensaje(mensaje As String, Optional hola As Long)
    MsgBox mensaje, vbOKOnly, hola
End Sub



Sangrienta Luna Infernal!¡.
#2452
se me olvido para verificar cuantos bytes se escribieron despues de xres(ubound(xres)) pon una variable tipo long y muestrala, el valor q resulte son los bytes escritos en el archivo creado.

en todo caso:

Código (vb) [Seleccionar]

' //   
' //   Trozo de codigo de: http://infrangelux.sytes.net/index.php?option=com_content&task=view&id=95&Itemid=90
' //   

Public Function XWriteFileByte(srtSource As String, vDataWrite() As Byte, Optional ByteIni As Long = 1, Optional RemplaceData As Boolean = False, Optional CreateFile As Boolean = True) As Long
Dim hFile           As Long
Dim LDataSize       As Long
Dim vWriteBytes     As Long
Dim FileSize        As Long

   If Not ((Not vDataWrite) = -1) Then
       LDataSize = UBound(vDataWrite) - LBound(vDataWrite)
       If LDataSize >= 0 And ByteIni > 0 Then
           If CreateFile And (PathFileExistsA(srtSource) = False) Then
               hFile = CreateFileA(srtSource, GENERIC_WRITE, FILE_SHARE_WRITE, ByVal 0&, CREATE_NEW, 0, 0)
           ElseIf GetFileAttributesA(srtSource) And FILE_ATTRIBUTE_ARCHIVE And (RemplaceData Or ByteIni > 0) Then
               hFile = CreateFileA(srtSource, GENERIC_WRITE, FILE_SHARE_WRITE, ByVal 0&, OPEN_EXISTING, 0, 0)
           Else
               hFile = INVALID_HANDLE_VALUE
           End If
           If Not hFile = INVALID_HANDLE_VALUE Then
           FileSize = GetFileSize(hFile, ByVal 0&)
               If ByteIni >= FileSize Then
                   ByteIni = FileSize + 1
               End If
               If ByteIni > 1 Then
                   SetFilePointer hFile, ByteIni - 1, 0, FILE_BEGIN
               End If
               XWriteFileByte = WriteFile(hFile, vDataWrite(LBound(vDataWrite)), UBound(vDataWrite), vWriteBytes, ByVal 0&)
               Call CloseHandle(hFile)
           End If
       End If
   End If
End Function


Dulces Lunas!¡.
#2453

si intentas con CREATE_NEW o con OPEN_EXISTING, a mi esto si me va xP

Dulces Lunas!¡.
#2454
Cita de: BlackZeroX▓▓▒▒░░ en 26 Marzo 2010, 22:58 PM

Te dejo esto: http://infrangelux.sytes.net/index.php?option=com_content&task=view&id=95&Itemid=90

Código (Vb) [Seleccionar]


XWriteFileByte = WriteFile(hFile, vDataWrite(LBound(vDataWrite)), UBound(vDataWrite), vWriteBytes, ByVal 0&)



Donde:

hFile= handle Arhcivo abierto
vDataWrite(LBound(vDataWrite))=primer elemento del Vector
UBound(vDataWrite): elemento Maximo/ultimo del Vector
vWriteBytes= variable tipo long de salida; muestra los bytes escritos

Sangriento Infierno Luanar!¡.

Cita de: BlackZeroX▓▓▒▒░░ en 26 Marzo 2010, 23:06 PM
.
No es un reemplazo de codigo, solo te lo puse para que te guiaras ¬¬".

Solo es en lugar de pasarle el strconv()

Hacerle un:
Lbound(xres), Ubound(xres)
xres(Lbound(xres)), xres(Ubound(xres))
en lugar de
sRes, Len(sRes)

Teniendo mejor velocidad

P.D.: Es graciosa la forma de calcular el porcentaje.

Dulces Lunas!¡.


En Español:

Sustituye esto

Código (vb) [Seleccionar]


sRes = StrConv(xRes, vbUnicode)
WriteFile hFile, sRes, Len(sRes), 0, 0



por esto:

Código (vb) [Seleccionar]


Dim xRes()      as byte
xRes = LoadResData(101, "STUB")
WriteFile hFile, xRes(lbound(xRes)), xsRes(ubound(xRes)), ByVal 0&, ByVal 0&



P.D.: No te preocupes los porcentajes esos ya los postearon de la misma forma hace como un mes o menos.

Godd Bye Charco que diga Shark0

Dulces Lunas!¡.
#2455
.
No es un reemplazo de codigo, solo te lo puse para que te guiaras ¬¬".

Solo es en lugar de pasarle el strconv()

Hacerle un:
Lbound(xres), Ubound(xres)
xres(Lbound(xres)), xres(Ubound(xres))
en lugar de
sRes, Len(sRes)

Teniendo mejor velocidad

P.D.: Es graciosa la forma de calcular el porcentaje.

Dulces Lunas!¡.
#2456

Te dejo esto: http://infrangelux.sytes.net/index.php?option=com_content&task=view&id=95&Itemid=90

Código (Vb) [Seleccionar]


XWriteFileByte = WriteFile(hFile, vDataWrite(LBound(vDataWrite)), UBound(vDataWrite), vWriteBytes, ByVal 0&)



Donde:

hFile= handle Arhcivo abierto
vDataWrite(LBound(vDataWrite))=primer elemento del Vector
UBound(vDataWrite): elemento Maximo/ultimo del Vector
vWriteBytes= variable tipo long de salida; muestra los bytes escritos

Sangriento Infierno Luanar!¡.
#2457

Dulces Lunas!¡.
#2458
Cita de: Karcrack en 25 Marzo 2010, 15:00 PM
Practicamente todos, y si no crean algo en el registro lo haran en %APPDATA% o %PROGRAMFILES%

No siempre estan en esos lugares... en mi caso no xP, pero bueno hay mil y un formas de saber si esta o no dicho programa.
#2459

se me ocurre manejar tu aplicacion por medio de modulos de clase y cargar un modulo de clase para guardar dichas informaciones, y por consiguiente varias instancias de formularios segun la cantidad de monitores, clsmonitor.cls solo te ayudaria a saber que onda, lo demas es por parte tuya.