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 - Karcrack

#781
1- Si no escribo un numero simplemente muestra el error, pero me pide el siguiente valor... mejor seria hacer un bucle hasta que el valor sea un numero.
2- Si mi IMC es por ejemplo 24.99 nada ocurrirá... Revisa los ifs...

Me he tomado la libertad de rehacer el codigo:
def imc(a,b):
  return a/b**2

print "\n\nBienvenido, con esta aplicacion podras calcular tu indice de masa corporal\n\n"

while True:
try:
peso = int(raw_input("Introduce tu peso en Kg, Ej: 75 --->"))
break
except:
print "Introduzca un numero"

while True:
try:
altura = float(raw_input("Introduce tu Altura en m, Ej: 1.80 --->"))
break
except:
print "Introduzca un numero, la coma va con un punto"

final = imc(peso,altura)
print "El resultado es: %.2f" % (final)

if final <= 18.50:
solucion = "Infrapeso"
elif final < 25:
solucion = "Normal"
elif final >= 25:
solucion = "Sobre Peso"
else:
solucion = "Obeso"

print "Usted parece : %s" % (solucion)
#782
Madura.
#783
Como se que a algunos os interesa el tema de los bits voy a compartir este pequeño tip (consejo) que no tiene ningun misterio :laugh:

Se trata de como comprobar utilizando operaciones con bits si un numero es multiple de una potencia de dos... Una potencia de dos es cualquier numero que se haya obtenido de esta expresion: 2x, siendo x un numero entero positivo... (Ej, 2,4,8,16,32...)

Es tan simple como aplicar esta regla:
Código (vb) [Seleccionar]
n = 2^x ' Potencia de dos
es_mutiple = (i And (n-1) = 0)


Para que lo entendais voy a poner un par de ejemplos:
CitarEs 1992 multiple de 8?
1992 decimal = 0111 1100 1000 en binario
n = 8 --> n - 1 = 7 --> 7 decimal = 111 en binario

0111 1100 1000
AND        111
______________
0000 0000 0000
CitarEs 12288 multiple de 128?
12288 decimal = 0011 0000 0000 0000 en binario
n = 128 --> n - 1 = 127 --> 127 decimal = 0111 1111 en binario

0011 0000 0000 0000
AND       0111 1111
__________________
0000 0000 0000 0000


No hace falta decir que suele ser mas rapido que hacer Mod ;)

Espero que os sea de ayuda :)
#784
Cita de: *PsYkE1* en 24 Agosto 2010, 20:52 PMTienes alguna fecha aproximada de publicacion?¿
Bueno, me gustaria tenerlo para antes de Septiembre, si no es posible estara para la primera semana ;)

Tu tranki que tu primo seguro que se las arregla :laugh:
#785
Bueno, ahora mismo he retomado la escritura del tuto y tengo una mala noticia para algunos... he decidido reescribir el tuto en Ingles... espero que no suponga mucha dificultad usar el traductor de Google :P

He aqui el indice para los impacientes :laugh:
Summary:

1.Brief introduction
2.What should I know before reading this paper?
3.Loading code onto the memory.
   1.Single variables.
   2.Arrays.
   3.Strings.
4.Executing the code:
   1.CallWindowProcA/W()
   2.Virtual Function Table (VFT) patch
   3.Zombie_AddRef() or Zombie_ReleaseRef()
   4.__vbaGoSubReturn()
5.Thanks and References
#786
Si no me equivico el "DEBUG" es para 16bits... asi que en W$ 7 por ejemplo no ira...
#787
Antes de ponerme a codear nada... Tu lo que quieres hacer es establecer un nuevo Array tipo Variant en el que el primer valor sea aaa?

MOD:
http://www.vbforums.com/showthread.php?t=625615
:o :o :o Psyke tiene un primo Ingles!!! :laugh:
#788
Es una de las formas de ejecutar codigo ASM, la mas rapida.

Se utiliza una clase, y como cada objeto en VB6 tiene una vTable, donde estan los punteros de las funciones, lo que se hace es añadir la funcion, y cuando la clase se inicializa se cambia el puntero a nuestro codigo en ASM, asi que cuando se llame a ese funcion en realidad se salta al codigo ASM :D

Estoy haciendo un tutorial de como ejecutar codigo ASM en VB... a ver si lo acabo, que es un tema muy interesante ;)
#789
Código (vb) [Seleccionar]
'---------------------------------------------------------------------------------------
' Module    : cFastSqr
' Author    : Karcrack
' Now       : 22/08/2010 20:25
' Purpose   : Fast alternative for Integer Sqr
' History   : 22/08/2010 First cut .........................................................
'---------------------------------------------------------------------------------------

Option Explicit
Private sCode       As String

'NTDLL
Private Declare Sub RtlMoveMemory Lib "NTDLL" (Destination As Any, Source As Any, ByVal Length As Long)

Public Function FastSqr(ByVal lValue As Long) As Long
    ' Filled with ASM later
End Function

Private Sub Class_Initialize()
    Dim sCode       As String
    Dim lPtr        As Long
   
    sCode = ChrW$(&H548B) & ChrW$(&HC24) & ChrW$(&H448B) & ChrW$(&H824) & ChrW$(&HFF2) & ChrW$(&HC02A) & ChrW$(&HFF2) & ChrW$(&HC051) & ChrW$(&HFF2) & ChrW$(&HC02D) & ChrW$(&H289) & ChrW$(&HC031) & ChrW$(&HCC2) & ChrW$(&H0)
   
    Call RtlMoveMemory(lPtr, ByVal ObjPtr(Me), 4)
    Call RtlMoveMemory(ByVal lPtr + &H1C, StrPtr(sCode), 4)
End Sub

Codigo ASM utilizado:
http://karcrack.pastebin.com/CLSZPR5d

Para calcular el rendimiento:
Sub Main()
    Dim cFS         As New cFastSqr
    Dim cT          As New CTiming
    Dim i           As Long
    Dim x           As Long
   
    cT.Reset
    For i = 1 To 10000000
        x = cFS.FastSqr(i)
    Next i
    MsgBox cT.sElapsed
   
    cT.Reset
    For i = 1 To 10000000
        x = CLng(Sqr(i))
    Next i
    MsgBox cT.sElapsed
End Sub


Es aproximadamente el doble de rapida en el calculo de Raices enteras :)

Saludos ;)
#790
Actualmente el proyecto Bifrost esta descontinuado... Si no me equivoco antiguamente la pagina oficial era Chasenet...

No te puedo asegurar de que todo lo que haya en esta pagina este limpio... Pero te recomiendo que te pases por troyanosyvirus[dot]com[dot]ar, me he bajado algunas cositas de ahi, y nunca me he llevado una sorpresa ;)