kodnet (.NET Framework interop para VFP9) ahora CÓDIGO LIBRE

1,402 views
Skip to first unread message

James S

unread,
Feb 10, 2019, 4:59:15 AM2/10/19
to Comunidad de Visual Foxpro en Español
Algunos de ustedes ya conocían mi librería para comunicación .NET desde VFP9. Bueno he liberado el código, y ahora lo pueden encontrar en github.


 
Agradezco enormemente si comparten en lo posible de su medida, y además si alguien que luego aprenda a usarla y ayude a documentarla sería excelente. 
Gracias a todos los que se interesaron en el proyecto

Gaetano Quattrocchi

unread,
Feb 10, 2019, 5:06:14 AM2/10/19
to Comunidad de Visual Foxpro en Español
gracias !!!!

Dsan

unread,
Feb 10, 2019, 1:24:20 PM2/10/19
to publice...@googlegroups.com
Excelente muchas gracias M. James

Por ahi te consulto alguna cosas que deseo implementar un poco mas adelante, pero claro te apoyo en el boton DONATE.

Saludes

DSanchez



El dom., 10 feb. 2019 a las 4:06, Gaetano Quattrocchi (<qgaet...@gmail.com>) escribió:
gracias !!!!

mbanco

unread,
Feb 10, 2019, 3:30:55 PM2/10/19
to Comunidad de Visual Foxpro en Español
Excelente aporte!!
Una consulta: es posible usar la libreria en VFPA 64Bit?

Muchas gracias.

James S

unread,
Feb 10, 2019, 3:39:04 PM2/10/19
to Comunidad de Visual Foxpro en Español
No la he probado en VFPA 64 bit. Siéntete libre de probarla y me dices si va bien en esa plataforma

mbanco

unread,
Feb 10, 2019, 4:25:10 PM2/10/19
to Comunidad de Visual Foxpro en Español
James
intenté ejecutar el ejemplo incluido y da un mensaje de error diciendo que no puede cargar la librería clrhost.dll porque no es de 64 Bit.

James S

unread,
Feb 10, 2019, 5:16:04 PM2/10/19
to Comunidad de Visual Foxpro en Español
Entonces por ahora no es compatible. Hay que ver si se puede portar ClrHost.dll a 64 bits. Más tarde o sino mañana subo el código actual de ClrHost.dll

Esteban H.

unread,
Feb 10, 2019, 8:06:01 PM2/10/19
to publice...@googlegroups.com

Gracias!!!

 

Voy a probarla…

 

Saludos

Francisco

unread,
Feb 11, 2019, 3:36:25 AM2/11/19
to Comunidad de Visual Foxpro en Español

Carton Jeston

unread,
Feb 11, 2019, 3:59:38 AM2/11/19
to Comunidad de Visual Foxpro en Español
James, antes de nada agradecerte que has dado el paso de ofrecerla en open source, aunque casi hubiese preferido otra formula que te permitiera monetizar mas tu tiempo invertido. (no olvidemos que quien vaya a usarla tiene un boton DONATE mas abajo de descargar) :-)

Aun tengo otras cosas antes que incorporar tu libreria y lo que comentan del ClrHost.dll es fundamental tener el codigo para migrar a 64 y en un momento dado hablamos con chen para ver como hacerlo. Y ya no solo por tu libreria, a lo largo de este año tengo que ir migrando todas mis librerias a 64 y la que no pueda, la tendre que sustituir.

Tengo muchas cosas que probar, como la libreria de phyton y la tuya tambien la veo muy interesante porque ayuda a "crecer" al fox hacia C#.

Tambien te recomiendo (si aun no lo esta), darte a conocer en VFPX para incorporarla al proyecto y en FOXITE para asi llegar a mas programadores de fox.


Rh Yac

unread,
Feb 11, 2019, 10:29:44 AM2/11/19
to publice...@googlegroups.com
Cual  " libreria de phyton  "  ?

________________________________
Rene Yacyna
Córdoba - Argentina.
C.P.C.I.P.C.2586
Cel.54 93517032948


James S

unread,
Feb 11, 2019, 11:42:11 AM2/11/19
to Comunidad de Visual Foxpro en Español
A Francisco: te lo voy a poner punto por punto las mejoras que veo. Posiblmente hayan más pero se me escapen

1. Entra a la url de mi proyecto y mira los ejemplos. Son basados en los mismos ejemplos que pone wwDotnetBridge, pero cuál te parece más fácil de programar? Mi librería soporta acceso directo a los métodos con su propio nombre en vez de usar métodos como "InvokeMethod"
2. wwDotnetBridge según vi en el README y la documentación, no soporta asíncrono real, o al menos no de manera eficiente. EL ejemplo que está en el README de descarga es  un asíncrono falso (en realidad están usando un método síncrono sobre un thread que no es igual de eficiente a un asíncrono) en cambio mi ejemplo si usa el metodo de .NET asíncrono, así que asumo que mi proyecto tiene mejor soporte para Métodos asíncronos y eventos.
3. Mi librería tiene soporte para crear delegados  que apuntan a funciones VFP (en el ejemplo de descarga asíncrona en mi readme se puede ver esto) en cambio wwDotnetBridge lo que ofrece es un objeto llamémoslo enlazador de eventos  que da  solo una parte y menos eficiente a mi juicio, de la funcionalidad de lo que vendría siendo el soporte de delegados
4. Mi librería soporta controles .NET embebidos en forms VFP, wwDotnetBridge no
5. Mi librería consigue ser unas 8 a 10 veces más rápido en algunos casos en la ejecución de métodos, ya que usa un sistema inteligente de caché, en cambio parece que wwDotnetbridge usa reflexión pura haciendo más lento (sobre todo si hablamos de iteraciones). Paso un vídeo con la prueba: https://drive.google.com/file/d/1FI2I6kuYAmzSrArNgXdtGXvgFVvmUoGN/view?usp=sharing

 6. Allow nested, try with my library for example this and works: 
messagebox(_screen.kodnet.getStaticWrapper("System.Object[]").construct(10).Length)

James S

unread,
Feb 11, 2019, 12:28:24 PM2/11/19
to Comunidad de Visual Foxpro en Español
Carton Jeston. BUeno yo no he usado nunca el VFP Advanced. Ya he subido el código de ClrHost al repositorio. Es un código copiado del proyecto wwDotnetBridge que brinda una funcionalidad similar a mi librería, pero yo ya he expuesto algunas ventajas de la mía en el comentario anterior. Ojalá al compilar esta librería a 64 bits se logre dar compatibilidad con VFP Advanced. 

James S

unread,
Feb 11, 2019, 8:42:23 PM2/11/19
to Comunidad de Visual Foxpro en Español
 Acerca de añadir a VFPX, podría alguien que ya haya hecho eso antes, o que quiera colaborar añadiendo el proyecto a VFPX enlanzado los repositorios? Si el administrador de VFPX necesita un correo pueden dar el de mi nombre comercial: cont...@kodhe.com 

Irwin Rodriguez

unread,
Feb 11, 2019, 9:03:33 PM2/11/19
to publice...@googlegroups.com
Excelente James, gracias por el aporte. Ya le haré un fork y un watch. La probaré el siguiente Lunes.

Saludos...!!!
--
Irwin Rodríguez
Analista Programador

+593 0994903424
Latacunga - Ecuador
"Un equipo solo son piezas que intercambias hasta que terminas el trabajo, es eficiente, funciona."

Carton Jeston

unread,
Feb 13, 2019, 1:44:00 AM2/13/19
to Comunidad de Visual Foxpro en Español
Aquí dice como enlazar a VFPX

Sobre phyton...

ejecutar comandos/programas python desde fox

convierte de fox a phyton (en proceso)

Este ultimo aun le queda camino, pero aunque sea como convertidor de codigo no hay que perderlo de vista.

James S

unread,
Feb 15, 2019, 5:02:27 AM2/15/19
to Comunidad de Visual Foxpro en Español
He añadido más documentación al proyecto https://github.com/voxsoftware/kodnet

* Habilidad para compilar código C#
* Ventajas de kodnet sobre wwDotnetBridge
* Crear delegados y tipos genéricos

Pienso que el siguiente tema de documentación podrían ser los tipos Enum. En kodnet se utiliza igual que cualquier otro tipo con propiedades estáticas, pero sería bueno documentar que además provee los métodos bitAnd y bitOr.

Algún otro tema o características de .NET que consideren necesario incluir en el README?

Captura de pantalla_2019-02-15_04-57-46.png

Captura de pantalla_2019-02-15_04-57-33.png





El domingo, 10 de febrero de 2019, 4:59:15 (UTC-5), James S escribió:

Dsan

unread,
Feb 15, 2019, 7:56:13 PM2/15/19
to publice...@googlegroups.com

James Excelente,

con este ultimo ejemplo  podria usar capas en VFP ya sea usando C# o muy bien pasandome referencias por el objecto
_screen.KodaNet, o entendi mal? has intentado eso?

Saludes

DSanchez



Carton Jeston

unread,
Feb 18, 2019, 1:58:32 AM2/18/19
to Comunidad de Visual Foxpro en Español
Viendo las ultimas librerias que han ido saliendo, no es nada descabellado aprender C# y Phyton.

En este caso, ademas de añadir componentes c#, incrustarlos a los formularios y lo mas increible, compilar, abre una expansion de foxpro nunca vista.

James S

unread,
Feb 22, 2019, 8:26:31 PM2/22/19
to Comunidad de Visual Foxpro en Español
Sí. Osea cuando compilas código C# Directamente con kodnet, es el mismo efecto que si compilaras primero con visual studio, y usaras la función _screen.kodnet.loadAssemblyFile ... 

James S

unread,
Feb 22, 2019, 8:31:02 PM2/22/19
to Comunidad de Visual Foxpro en Español
Así es las posibilidades son muchas. Mira mi nuevo tema abierto, donde muestra que kodnet puede usarse para automatizar aplicaciones de  Microsoft.Office

mbanco

unread,
Sep 19, 2019, 12:58:14 PM9/19/19
to Comunidad de Visual Foxpro en Español

Hola,
tengo problemas cuando quiero pasar un array double a un método en el siguiente codigo:



do fullpath("kodnet.prg")

TEXT TO m.code noshow

using System;
using System.Collections.Generic;
using System.IO;

public class program{

public static void main(){


}

}

namespace Compiled
{

public class outliers{

    public double index { get; set; }

    public double replacements { get; set; }


}	


public class datos{

    public double consumo { get; set; }

}	


public class Test
{	
	
	
	public List<outliers> Routliers(double[,] datos) {

		List<outliers> resultado = new List<outliers>();

	        for (int i = 0; i <= 19 - 1; i++)
	        {
		
	           resultado.Add(new outliers { index = datos[i,1], replacements = datos[i,1] });

		}	
	
	
		return resultado;
					
	}
	
	
	
	

	public static int ExecuteFunc(Func<string,int> func)
	{
		return func("Method executed from .NET");
	}
	
	public static int ExecuteFunc(Func<string,int> func, string message)
	{
		return func(message);
	}
	
	public static int ExecuteFunc(Func<string,int,string,int> func, string message, int option, string title)
	{
		return func(message,option,title);
	}
}

}

ENDTEXT

LOCAL engine

Local asem, test


engine = _screen.kodnet.getStaticWrapper("jxshell.csharplanguage").construct()
m.engine.Runscript(m.code)
asem = m.engine.getCompiledAssembly()
_Screen.kodnet.loadAssembly(m.asem)


test = _screen.kodnet.getStaticWrapper("Compiled.Test").construct()


LOCAL ARRAY m_datos(19, 1) as Double

m_datos(1,1) = 378
m_datos(2,1) = 327
m_datos(3,1) = 311
m_datos(4,1) = 329
m_datos(5,1) = 801
m_datos(6,1) = 1238
m_datos(7,1) = 449
m_datos(8,1) = 408
m_datos(9,1) = 452
m_datos(10,1) = 442
m_datos(11,1) = 947
m_datos(12,1) = 1617
m_datos(13,1) = 451
m_datos(14,1) = 495
m_datos(15,1) = 489
m_datos(16,1) = 391
m_datos(17,1) = 1182
m_datos(18,1) = 1132
m_datos(19,1) = 380


resultado = test.Routliers(m_datos)

FOR n = 0 TO resultado.COUNT - 1

? ALLTRIM(STR(resultado.item(n).index)) + " - " + ALLTRIM(STR(resultado.item(n).replacements, 10,2))

ENDFOR

Message has been deleted

James Suárez

unread,
Sep 19, 2019, 3:35:31 PM9/19/19
to Comunidad de Visual Foxpro en Español
Que tal amigo, soy el creador de Kodnet, ya te he respondido en github, la solución a tu pregunta: https://github.com/kodhework/kodnet/issues/6

Mauricio Banco

unread,
Sep 19, 2019, 10:19:33 PM9/19/19
to publice...@googlegroups.com
Muchas gracias James,
Funcionó perfectamente. 

Es excelente esta clase. Ojala se pueda convertir a VFPA 64 bit, ya que en dicho caso el Fox sería imbatible. Fox Rocks!!

Saludos

  

El jue., 19 sept. 2019 a las 16:34, James Suárez (<jame...@gmail.com>) escribió:
Que tal amigo, soy el creador de Kodnet, ya te he respondido, el issue en github con la respuesta a tu pregunta. Puedes revisar
https://github.com/kodhework/kodnet/issues/6

El jueves, 19 de septiembre de 2019, 11:58:14 (UTC-5), mbanco escribió:

--
Has recibido este mensaje porque estás suscrito a un tema del grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este tema, visita https://groups.google.com/d/topic/publicesvfoxpro/cAD6fEDr9nc/unsubscribe.
Para cancelar la suscripción a este grupo y a todos sus temas, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/publicesvfoxpro/5d14cd90-8fcb-4697-aef3-590f3dcccf98%40googlegroups.com.

Germán Fabricio Valdez

unread,
Sep 29, 2019, 12:29:04 PM9/29/19
to Comunidad de Visual Foxpro en Español
hola james, gracias por el aporte

seria bueno, que hagas automaticamente la seleccion de 32 y 64 bits

esta instruccion de vfox te devuelve si es de 64 o 32 bits


vtipo=IIF(TYPE("_win64")="L" and _win64,.t.,.f.)

if vtipo
   64 bits
else
  32 bits
endif 

esta correcto que publiques los fuentes, pero tambien las librerias, ya hechas, para reducir al maximo la complejidad 

la idea es que esten las dll compiladas

y que no  sea necesario entrar a visual studio

tambien, desde que version de Visual Studio, funciona esta clase

te adjunto el ultimo visual foxpro advanced 32 y 64 bits



_______________
VFPA 8, 9 y 10, 32 y 64 bits enu 2019.08.30 version FINAL (RELEASE 2019k) FREE (cambios ODBC).txt

HernanCano

unread,
Sep 29, 2019, 4:11:42 PM9/29/19
to Comunidad de Visual Foxpro en Español
Hola, Germán.
En la parte superior de este .TXt que compartes, dice:

este es un error en el manejo de transacciones ODBC, que aparece en VFPA 10 32 bits , en VFP 9 no da error, ni en VFPA 64 bits

Me puedes decir: ¿a qué mensaje se refiere?

German Fabricio Valdez

unread,
Sep 29, 2019, 4:19:39 PM9/29/19
to publice...@googlegroups.com, HernanCano

hola hernan

habia un error en conexiones odbc en vfpa 32 bits, en el manejo de transacciones

no ocurre en vfp9 ni vfpa de 64 bits

--
Has recibido este mensaje porque estás suscrito a un tema del grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este tema, visita https://groups.google.com/d/topic/publicesvfoxpro/cAD6fEDr9nc/unsubscribe.
Para cancelar la suscripción a este grupo y a todos sus temas, envía un correo electrónico a publicesvfoxp...@googlegroups.com.

HernanCano

unread,
Sep 29, 2019, 4:43:23 PM9/29/19
to Comunidad de Visual Foxpro en Español
Bien.
Reply all
Reply to author
Forward
0 new messages