Tengo un problema espero me puedas ayudar consiste en lo siguiente: Necesito instanciar una libraría de clase en Pb 9 pero no se donde hacer referencia a ella o declararla así como también como utilizarla, ¿por ejemplo en visual Basic se agrega la dll como referencia del proyecto y solamente se instancia un objeto con esta clase y puede trabajar con ella . Puede PB 9 trabajar con librerías externas?
1 Respuesta
Respuesta de Antonio Garcia
1
1
Antonio Garcia, clipper todas sus versiones (manejo total) power builder todas...
Cuando necesitas utilizar un objeto o clase, la forma de hacerlo no es por medio de un dll, sino que por medio de un objeto tipo ole, ocx, o similar, lo que anteriormente te explicaba unicamente funciona para una función o procedimiento. Sin embargo si tu necesidad es utiliza una clase o similar, el problema con que te vas a encontrar es que, power builder no tiene acceso a los eventos de este tipo de objetos, lo cual esto lastimosamente te limita grandemente. Personalmente tuve una experiencia con respecto a utilizar objetos que manejaban un scanner lector de barras. Y tuve que programar un objeto timer, de tal forma que todo el tiempo estuviera preguntando el valor de una propiedad, la cual recibe el valor de la lectura del scanner, sin embargo esto no hubiera sido necesario si hubiera podido efectuar un script dentro del evento correspondiente. En tu caso, si no encuentras un auxiliar para suplir la necesidad del evento, te puedo adelantar desde ya que no vas a poder implementar el objeto dentro de tu programa pb., lastimosamente este es una más de las limitaciones de power builder o lo que podría llamar como LA CARA OCULTA DE POWER BUILDER.
Mm ok gracias me has resultado de gran ayuda
La forma en que power builder accesa a funciones de librerías externas (dll's), es muy similar tengo entendido que visual basic. En el caso de power builder existe un área de declaración de variables (DELCARE INSTANCE VARIABLES), esta a su vez tiene escala de declaración de tipos de variables. Global variables Shared variables Instance variables Global external funcions Local external funcions En cualquiera de las dos ultimas puedes incluir la llamada a una función que se encuentra ubicada en una librería del tipo dll, claro toma en cuenta que dependiendo del alcance que quieras darle a dicha función externa, así será la intentar que ocupara al momento de declararla, por ejemplo si necesitas que pueda ser utilizada por referencia de otra ventana o procedimiento la declaras en la parte global, y sino en la parte local, lo que significa que dicha función o funciones solamente estará disponible para la ventana en cuestión. Un ejemplo. Para extraer el directorio donde se encuentra instalado windows deberás hacer lo siguiente. 1. En el área GLOBAL EXTERNAL FUNCTIONS, colocas la siguiente instrucción Function uint GetWindowsDirectoryA (ref string dirtext, uint textlen) LIBRARY "KERNEL32.DLL" Como veras esta instrucción es una función que se encuentra en la librería KERNEL32.DLL, dicha librería se encuentra generalmente en el directorio system o system32, según sea el sistema. Una vez hecho esto. En cualquier parte de la ventana por ejemplo en un botón puedes agregar en el evento clicked el siguiente código. STRING ls_dirwin GetWindowsDirectoryA(ls_dirwin, 256) MESSAGEBOX('windows esta instalado en', ls_dirwin) De la misma manera como te presento este ejercicio, así de la misma forma se declaran cualquiera de las funciones o procedimientos que se encuentren en un dll, externo La única salvedad que tienes que tomar en cuenta, es el conocimiento de los argumentos necesarios para ejecutar dichos procedimientos o funciones, y el nombre correcto de estos. Ademas que estos sean públicos.