https://foro.gambas-es.org/viewtopic.php?f=17&t=4256
-----------------------------------
tercoIDE
Sabado, 29 Noviembre 2014, 13:52

[C] Funciones CallBack
-----------------------------------
Siiiiiiiii!!!!!!!!!!!!!

Hace rato andaba dando vueltas con un tema que nunca pude resolver: Como hacer que un programa de signos de vida durante una larga  rutina en C sin alterar la velocidad de calculo.

C es 100 veces mas rapido que Gambas y puede acelerar un programa que requiera, en algunos momentos, mucho procesamiento. Gracias al bueno de Benoit, Gambas permite ser llamado desde "afuera", o sea desde otro programas no-Gambas o librerias. A modo de ayuda-memoria, lo explico:

Modulo con las declaraciones de la libreria C
[code linenumbers=false syntax=gambas]Library "matrix8"  ' libreria externa en C

' Rutina que resuelve un sistea de ecuaciones con el metodo de Gauss
' al final de los argumentos, especifico la funcion de Gambas que la libreria C va a llamar cada tanto para dar informacion de como va el proceso
' se declara como Pointer
Public Extern M8gauss(mfMatriz As Float[], vfIncognitas As Float[], vfTerminosInd As Float[], lOrden As Long, CallbackFunction As Pointer) As Long

[/code]

Rutina que sera llamada desde C
[code linenumbers=false syntax=gambas]Private Sub Porcentaje(avance As Integer)
    
    Debug "Progreso " & Format$(avance, "0.00") & "%")  

    Wait 0.01   ' esto mantiene al programa vivo  
End[/code]

Tipica llamada
[code linenumbers=false syntax=gambas]
...
resultado = modLibMatrix8.M8gauss(matrigest, vecdez, vecterind, modestru.ordmatrig, Porcentaje) 
...

[/code]

Parte de la rutina en C
[code linenumbers=false syntax=C]long M8gauss(double *matriz, double *x, double * ti, long n ,  void (*cbGambas) (int) )
{

    // triangulacion
    for (i = 0;i<n;i++)
    {
        i1=i*n;


        cbGambas(i);  // Mantengo Gambas informado de mi progreso[/code]

 :mrgreen:


-----------------------------------
jsbsan
Sabado, 29 Noviembre 2014, 22:05

Re: [C] Funciones CallBack
-----------------------------------
tercoIDE:

[quote]gambas permite ser llamado desde "afuera", o sea desde otro programas no-Gambas o librerias. [/quote]
Guay!!!...Muy buena utilidad que le has dado.

Saludos

Julio


-----------------------------------
vuott
Domingo, 30 Noviembre 2014, 05:16

Re: [C] Funciones CallBack
-----------------------------------
:arrow:


-----------------------------------
tercoIDE
Domingo, 30 Noviembre 2014, 22:21

Re: [C] Funciones CallBack
-----------------------------------
voutt

ya se que existian las funciones CallBack, no he descubierto la America!!!

pero...haber podido implementarlas tanto desde C como desde Gambas ha sido para mi muy satisfactorio

 :mrgreen:


