none
Problema de lentitud de acceso a CorelDraw RRS feed

  • Pregunta

  • Tengo un problema de lentitud al acceder a los datos de CorelDRAW mediante la libreria "Corel - CorelDRAW 14.0 Library" desde el Visual Basic 6.0.
    A modo de ejemplo, a continuación les muestro una rutina de las que uso y que sufre ese retardo considerable:

        Sub ObtenerPosicion(s As CorelDRAW.Shape, intSegment As Integer)
            dim XCorel As Double, YCorel As Double, t_OffsetSegment As Double     
            s.Curve.Segments.Item(intSegment).GetPointPositionAt XCorel, YCorel, t_OffsetSegment
            ...
        End Sub

        Si se ejecuta esta instrucción 100 veces seguidas con VB6.0 su duración total es de más de 2 segundos; en canvio, con VBA intregrado en CorelDraw tan sólo dura un instante (y el problema es que no puedo usar VBA porque no permite la creación del fichero ejecutable ".exe").

    ¿Cabe la posibilidad de evitar dicha demora en los accesos al documento CorelDRAW utilizando el Visual Basic 6.0? ¿Cómo?

     

    • Editado VB6.0_User martes, 14 de diciembre de 2010 13:44
    lunes, 13 de diciembre de 2010 8:39

Todas las respuestas

  • La diferencia esta en que vb6 tiene que levantar el objeto de corel (el 14 ya no es tan compatible con vb) y eso tarda, en vba viene integrado con  la nueva libreria por eso no tarda.

    Igual 2 segundos no es nada...

    lunes, 13 de diciembre de 2010 19:49
  • Gracias Luis,

    pero sí que son determinates esos 2 segundos, porque en un mismo documento podrían haber cientos de figuras diferentes, no sólo una, con lo cual se demoraría demasiado.

    Crees que si en lugar de usar el CorelDRAW 14.0 Library usara una anterior más compatible con VB iría de forma instantánea? (Aunque a la vez tendría que ser compatible con CorelDRAW x4)

    O si usara CorelDRAW 14.0 Library pero con VB.Net, haría que los accesos fueran instantáneos?

    O realmente no hay solución para que este tipo de accesos sean "instantáneos" a no ser que sea desde el propio VBA incorporado en Corel?

    martes, 14 de diciembre de 2010 8:43
  • Supuestamente vb levanta el componente y a la proxima vez ya tendria en memoria algo pero se ve que con corel debe quitar los accesos de  memoria y tiene que levantarlo cada vez.

    Salvo que levantes el vba en visual y a traves de este al corel embebido.

    miércoles, 15 de diciembre de 2010 17:35
  • Hola Luis,

    me parece muy interesante esto que comentas:

          "Salvo que levantes el vba en visual y a traves de este al corel embebido."

    El caso es que no sé como acceder al VBA para levantarlo. He probado varias cosas pero no eran correctas:

        · Dim myVBA As VBA
        · Dim myVBA As Object
            Set myVBA = CreateObject("VBA.Application")

    Se te ocurre como poder acceder al VBA de Corel para acceder desde esta a los objetos de Corel?

     

    • Propuesto como respuesta Ronald Giles viernes, 2 de marzo de 2012 6:41
    • Votado como útil Ronald Giles viernes, 2 de marzo de 2012 6:42
    jueves, 16 de diciembre de 2010 11:31
  • Hola VB6.0_User estoy interesado en saber manipular corel draw desde visula basic, podrias facilitarme una demo mi correo es giles.ronald@hotmail.com

    viernes, 2 de marzo de 2012 6:43