ECModule.dll

Estado
Cerrado para nuevas respuestas.

Dr. GoDKeR

El Rey y el As
Miembro del equipo
Administrador
Developer
Moderador de RRPP
Moderador de AO
Moderador de Tecnología
Moderador de Entretenimiento
Moderador de Diseño
Especialista de RRPP
Especialista de Entretenimiento
Especialista de Tecnología
Especialista de Argentum
Especialista de Diseño
bueno viendo la ecmodule q usa Entropia decidi usarla en mi cliente, pero tengo un problema

tengo esto declarado:
Código:
Public Declare Function Coseno Lib "ECModule.dll" (Number As Double) As Double
Public Declare Function Seno Lib "ECModule.dll" (Number As Double) As Double
y cuando qiero probar me salta error aca:

Código:
X = Effect(EffectIndex).X - (Seno(A) * Effect(EffectIndex).Modifier)
dice:"El Argumento de ByRef no coincide"

y me mara la (A)

q esta declarada como

Código:
Dim A as Single
alguna mano?
 

Franeg95

CARP
Ex-Staff
Fijate en la funcion Seno que argumento utiliza. Si usa Single usa la variable single, si usa double castealo.
 

Dr. GoDKeR

El Rey y el As
Miembro del equipo
Administrador
Developer
Moderador de RRPP
Moderador de AO
Moderador de Tecnología
Moderador de Entretenimiento
Moderador de Diseño
Especialista de RRPP
Especialista de Entretenimiento
Especialista de Tecnología
Especialista de Argentum
Especialista de Diseño
Franeg95 dijo:
Fijate en la funcion Seno que argumento utiliza. Si usa Single usa la variable single, si usa double castealo.
usa (Number as Double)
 

[K]alamar

Proyectando Ideas
El cliente 11.5 tiene ya declarado Cos y Sen como el Coseno y el Seno...

Si no usas ese Cliente, mira mas o menos como lo tiene echo, ahora llego a mi casa y si me acuerdo te muestro.


Suerte.
 

Pato

Destructor Lvl 3
Entonces declará A como double y asunto resuelto. Cuando pasas un argumento por referencia(ByRef o cuando no se pone nada, como en este caso) tiene que ser del mismo tipo. Si espera un byte le tenés que pasar un byte, sí o sí, si espera un integer le tenés que pasar un integer y así con todos los tipos habidos y por haber.
 

Dr. GoDKeR

El Rey y el As
Miembro del equipo
Administrador
Developer
Moderador de RRPP
Moderador de AO
Moderador de Tecnología
Moderador de Entretenimiento
Moderador de Diseño
Especialista de RRPP
Especialista de Entretenimiento
Especialista de Tecnología
Especialista de Argentum
Especialista de Diseño
pato dijo:
Entonces declará A como double y asunto resuelto. Cuando pasas un argumento por referencia(ByRef o cuando no se pone nada, como en este caso) tiene que ser del mismo tipo. Si espera un byte le tenés que pasar un byte, sí o sí, si espera un integer le tenés que pasar un integer y así con todos los tipos habidos y por haber.
ya lo ise eso, pero me tira error aca

Código:
    Effect(EffectIndex).Particles(Index).ResetColor 1, 1, 0.2, 0.6 + (Rnd * 0.4), 0.06 + (Rnd * 0.2)
"Exprecion demasiado compleja"
 

0xDEADBEEF

Vicinity of obscenity
Ex-Staff
Pasa las funciones completas, no somos adivinos y no podemos intuir el codigo que hay antes o después, y de donde viene cada cosa. Pasa la funcion ResetColor.
 

Dr. GoDKeR

El Rey y el As
Miembro del equipo
Administrador
Developer
Moderador de RRPP
Moderador de AO
Moderador de Tecnología
Moderador de Entretenimiento
Moderador de Diseño
Especialista de RRPP
Especialista de Entretenimiento
Especialista de Tecnología
Especialista de Argentum
Especialista de Diseño
Código:
Private Sub Effect_Bless_Reset(ByVal EffectIndex As Integer, ByVal Index As Long)
'*****************************************************************
'More info: [url=http://www.vbgore.com/CommonCode.Partic]http://www.vbgore.com/CommonCode.Partic[/url] ... less_Reset" class="postlink" rel="nofollow" onClick="window.open(this.href);return false;
'*****************************************************************
Dim A As Double
Dim X As Single
Dim Y As Single
 
    'Get the positions
    A = Rnd * 360 * DegreeToRadian
    X = Effect(EffectIndex).X - (Seno(A) * Effect(EffectIndex).Modifier)
    Y = Effect(EffectIndex).Y + (Coseno(A) * Effect(EffectIndex).Modifier)
 
    'Reset the particle
    Effect(EffectIndex).Particles(Index).ResetIt X, Y, 0, Rnd * -1, 0, -2
    Effect(EffectIndex).Particles(Index).ResetColor 1, 1, 0.2, 0.6 + (Rnd * 0.4), 0.06 + (Rnd * 0.2)
 
End Sub
restcolor:
Código:
Public Sub ResetColor(sngRed As Single, sngGreen As Single, sngBlue As Single, sngAlpha As Single, sngDecay As Single)
'************************************************************
'Change the particle's color values
'More info: [url=http://www.vbgore.com/CommonCode.Particle.ResetColor]http://www.vbgore.com/CommonCode.Particle.ResetColor[/url]" class="postlink" rel="nofollow" onClick="window.open(this.href);return false;
'************************************************************
 
    sngR = sngRed
    sngG = sngGreen
    sngB = sngBlue
    sngA = sngAlpha
    sngAlphaDecay = sngDecay
 
End Sub
 

Mafia

Juree!
Em, proba poniendo asi :

Código:
Public Declare Function Coseno Lib "ECModule.dll" (ByVal Number As Double) As Double
Public Declare Function Seno Lib "ECModule.dll" (ByVal Number As Double) As Double
No se si esta bien, pero a mi me tiraba esos errores pq me comia el ByVal delante de las declaraciones
 

0xDEADBEEF

Vicinity of obscenity
Ex-Staff
De nuevo, tienes todo declarado as Single, ves? Cuando no pones byval en los argumentos, lo toma directamente como byref, y cuando usas byref tienes que respetar el tipo, asi que cambia as single por as double en donde necesites! Solo en donde sea necesario.

Aqui por ejemplo:
ResetIt X, Y,

PD: Perdona antes, pero es que odio que me pongan una linea y me digan, me tira error aqui, y no pongan nada más del codigo.
 

Dr. GoDKeR

El Rey y el As
Miembro del equipo
Administrador
Developer
Moderador de RRPP
Moderador de AO
Moderador de Tecnología
Moderador de Entretenimiento
Moderador de Diseño
Especialista de RRPP
Especialista de Entretenimiento
Especialista de Tecnología
Especialista de Argentum
Especialista de Diseño
•Parra dijo:
De nuevo, tienes todo declarado as Single, ves? Cuando no pones byval en los argumentos, lo toma directamente como byref, y cuando usas byref tienes que respetar el tipo, asi que cambia as single por as double en donde necesites! Solo en donde sea necesario.

Aqui por ejemplo:
ResetIt X, Y,

PD: Perdona antes, pero es que odio que me pongan una linea y me digan, me tira error aqui, y no pongan nada más del codigo.
jajaj si no importa

ahora lo cambio y les aviso

Gracias

pd:Mafia si pones eso asi tira error en la llamada a la DLL o algo asi
 

Mafia

Juree!
GoDKeR dijo:
•Parra dijo:
De nuevo, tienes todo declarado as Single, ves? Cuando no pones byval en los argumentos, lo toma directamente como byref, y cuando usas byref tienes que respetar el tipo, asi que cambia as single por as double en donde necesites! Solo en donde sea necesario.

Aqui por ejemplo:
ResetIt X, Y,

PD: Perdona antes, pero es que odio que me pongan una linea y me digan, me tira error aqui, y no pongan nada más del codigo.
jajaj si no importa

ahora lo cambio y les aviso

Gracias

pd:Mafia si pones eso asi tira error en la llamada a la DLL o algo asi
Ah ajaja xD, nose a mi me pasaba eso y ponia el ByVal y chau xD
 

Pato

Destructor Lvl 3
En mi vida me pasó lo de expresión demasiado compleja :s, habría que ver dónde puntualmente está tirando eso, pero es rarísimo.
 

0xDEADBEEF

Vicinity of obscenity
Ex-Staff
No uses lo de mafia, la dll no lo puedes cambiar, si no cambias desde el codigo de la dll también, y como float equivale a double, no existe un tipo de medio float que sea compatible, asi que dejalo como está.

Te sigue tirando el error? Que te marca exactamente? El error es simplemenet eso? (Opino igual que pato..)
 

Franeg95

CARP
Ex-Staff
Aver proba esto:
Código:
 
dim z,x as double
z= 0.6 + (Rnd * 0.4)
x= 0.06 + (Rnd * 0.2)
   Effect(EffectIndex).Particles(Index).ResetColor 1, 1, 0.2,z, x
Puntualmente donde tira el error?
 

Dr. GoDKeR

El Rey y el As
Miembro del equipo
Administrador
Developer
Moderador de RRPP
Moderador de AO
Moderador de Tecnología
Moderador de Entretenimiento
Moderador de Diseño
Especialista de RRPP
Especialista de Entretenimiento
Especialista de Tecnología
Especialista de Argentum
Especialista de Diseño
eaa anduvo! gracias a todos ^^

lo q ise fue ponerle en la declaracion de la dll, en Number as Double lo cambie por (ByVal Number as Double) as Double

Pueden cerrar :)
 

0xDEADBEEF

Vicinity of obscenity
Ex-Staff
GoDKeR dijo:
eaa anduvo! gracias a todos ^^

lo q ise fue ponerle en la declaracion de la dll, en Number as Double lo cambie por (ByVal Number as Double) as Double

Pueden cerrar :)
Y funcionó? No me lo puedo explicar.. jajajaja xD
 

Pato

Destructor Lvl 3
Franeg95 dijo:
Aver proba esto:
Código:
 
dim z,x as double
z= 0.6 + (Rnd * 0.4)
x= 0.06 + (Rnd * 0.2)
   Effect(EffectIndex).Particles(Index).ResetColor 1, 1, 0.2,z, x
Puntualmente donde tira el error?
Fran, esas declaraciones están mal!!!!!!!!

Haciendo eso z queda como variant, lo cual no está nada bueno. Cuando declarás 50 cosas en una misma línea lo único que cambia es que cambiás el dim por una coma xD, pero tenés que especificar los tipos en todas las variables.(En otros lenguajes como pascal eso sí es totalmente válido)
 
Estado
Cerrado para nuevas respuestas.
Arriba