how translate Fivewin "DLL FUNCTION" with Callback ?

General Help regarding HMG, Compilation, Linking, Samples

Moderator: Rathinagiri

Post Reply
User avatar
AUGE_OHR
Posts: 2065
Joined: Sun Aug 25, 2019 3:12 pm
DBs Used: DBF, PostgreSQL, MySQL, SQLite
Location: Hamburg, Germany

how translate Fivewin "DLL FUNCTION" with Callback ?

Post by AUGE_OHR »

hi,

i got CODE from a interesting Fivewin AI-Sample where i have a "DLL FUNCTION"

Code: Select all

#include "Fivewin.ch"
DLL FUNCTION Llama( cModel AS LPSTR, cPrompt AS LPSTR, pFunc AS PTR ) AS VOID PASCAL LIB "llama64.dll"

function Main()
   local oDlg, cPrompt := PadR( "List 10 possible uses of AI from my Windows apps.", 200 )
   local cAnswer := "", oAnswer, oBtn
   DEFINE DIALOG oDlg SIZE 700, 500 TITLE "FWH AI"
   @ 1, 1 GET cPrompt MULTILINE SIZE 300, 15
   @ 3, 1 GET oAnswer VAR cAnswer MULTILINE SIZE 300, 200
   @ 0.7, 52.5 BUTTON oBtn PROMPT "start" ;
      ACTION ( oBtn:Disable(), Llama( "phi-2_Q4_K_M.gguf", RTrim( cPrompt ),;
               CallBack( { | cStr | oAnswer:SetFocus(), oAnswer:Append( cStr ) } ) ),;
               oBtn:Enable(), oBtn:SetFocus() )
   @ 2.2, 52.5 BUTTON "Clear" ACTION oAnswer:SetText( "" )
   ACTIVATE DIALOG oDlg CENTERED
return nil

#pragma BEGINDUMP
#include <Windows.h>
#include <hbapi.h>
#include <hbapiitm.h>
static PHB_ITEM pBlock;
static void callback( char * szMsg )
{
   PHB_ITEM pStr = hb_itemPutC( NULL, szMsg );
   hb_evalBlock1( pBlock, pStr );
   hb_itemRelease( pStr );
}
HB_FUNC( CALLBACK )
{
   pBlock = hb_gcGripGet( hb_param( 1, HB_IT_BLOCK ) );
   hb_retnll( ( HB_LONGLONG ) callback );
}
#pragma ENDDUMP
how to "translate" to HMG :?:
have fun
Jimmy
User avatar
AUGE_OHR
Posts: 2065
Joined: Sun Aug 25, 2019 3:12 pm
DBs Used: DBF, PostgreSQL, MySQL, SQLite
Location: Hamburg, Germany

Re: how translate Fivewin "DLL FUNCTION" with Callback ?

Post by AUGE_OHR »

hi,

have made CODE for HMG

Code: Select all

#include "HMG.CH"
#include "hbdyn.ch"

MEMVAR _HMG_SYSDATA

PROCEDURE MAIN

DEFINE WINDOW AI_FORM   ;
   AT 241 , 702         ;
   WIDTH 722 HEIGHT 545 ;
   TITLE ""             ;
   ICON NIL             ;
   ON INIT Nil          ;
   ON RELEASE Nil       ;
   ON INTERACTIVECLOSE Nil ;
   ON SIZE Nil          ;
   ON MAXIMIZE Nil      ;
   ON MINIMIZE Nil      ;
   BACKCOLOR Nil

    DEFINE EDITBOX cPrompt
        ROW    10
        COL    20
        WIDTH  590
        HEIGHT 30
        VALUE PadR( "List 10 possible uses of AI from my Windows apps.", 200 )
        FONTNAME "Arial"
        FONTSIZE 12
        TOOLTIP ""
        TABSTOP .T.
        VISIBLE .T.
        READONLY .F.
        HSCROLLBAR .F.
        VSCROLLBAR .T.
    END EDITBOX

    DEFINE EDITBOX cAnswer
        ROW    60
        COL    20
        WIDTH  590
        HEIGHT 420
        VALUE ""
        FONTNAME "Arial"
        FONTSIZE 12
        TOOLTIP ""
        TABSTOP .T.
        VISIBLE .T.
        READONLY .F.
        HSCROLLBAR .T.
        VSCROLLBAR .T.
    END EDITBOX

    DEFINE BUTTON oBtn
        ROW    10
        COL    620
        WIDTH  80
        HEIGHT 28
        ACTION DoAction()
        CAPTION "Start"
        FONTNAME "Arial"
        FONTSIZE 12
        TOOLTIP ""
        FLAT .F.
        TABSTOP .T.
        VISIBLE .T.
    END BUTTON

    DEFINE BUTTON oClear
        ROW    60
        COL    620
        WIDTH  80
        HEIGHT 28
        ACTION DoClear()
        CAPTION "Clear"
        FONTNAME "Arial"
        FONTSIZE 12
        TOOLTIP ""
        FLAT .F.
        TABSTOP .T.
        VISIBLE .T.
    END BUTTON

END WINDOW

   CENTER WINDOW AI_FORM
   ACTIVATE WINDOW AI_FORM

RETURN

PROCEDURE DoAction()
LOCAL cPrompt := AI_FORM.cPrompt.Value

   AI_FORM.oBtn.VISIBLE := .F. // Disable()

   Llama( "phi-2_Q4_K_M.gguf", RTrim( AI_FORM.cPrompt.Value ),;
   CALLBACK( { | cStr | AI_FORM.cAnswer.SetFocus(), AI_FORM.cAnswer.Value := AI_FORM.cAnswer.Value + cStr } )  )

   AI_FORM.oBtn.VISIBLE := .T. // Enable()
   AI_FORM.oBtn.SetFocus()

RETURN

PROCEDURE DoClear()
   AI_FORM.cAnswer.Value := ""
RETURN

* DLL FUNCTION Llama( cModel AS LPSTR, cPrompt AS LPSTR, pFunc AS PTR ) AS VOID PASCAL LIB "llama64.dll"

FUNCTION Llama(cModel,cPrompt, pFunc)
RETURN HMG_CallDLL( "llama64.dll", HB_DYN_CTYPE_VOID, cModel, cPrompt, pFunc)    


#pragma BEGINDUMP
#include <Windows.h>
#include <hbapi.h>
#include <hbapiitm.h>
static PHB_ITEM pBlock;
static void callback( char * szMsg )
{
   PHB_ITEM pStr = hb_itemPutC( NULL, szMsg );
   hb_evalBlock1( pBlock, pStr );
   hb_itemRelease( pStr );
}
HB_FUNC( CALLBACK )
{
   pBlock = hb_gcGripGet( hb_param( 1, HB_IT_BLOCK ) );
   hb_retnll( ( HB_LONGLONG ) callback );
}
#pragma ENDDUMP
it does compile and start but "no Answer" ... :(

AI-Model and "llama64.dll" link you will find at
https://forums.fivetechsupport.com/view ... =3&t=44028
have fun
Jimmy
User avatar
AUGE_OHR
Posts: 2065
Joined: Sun Aug 25, 2019 3:12 pm
DBs Used: DBF, PostgreSQL, MySQL, SQLite
Location: Hamburg, Germany

Re: how translate Fivewin "DLL FUNCTION" with Callback ?

Post by AUGE_OHR »

hi,

here now working 64 Bit HMG Version
AI_PHI_2.ZIP
include llama64.dll (for i7-6700)
(1.73 MiB) Downloaded 559 times
you must download AI-Model (1.7 GB) here
https://huggingface.co/kroonen/phi-2-GG ... nload=true

---

after press Button Start it will take some Time
this Version will not show "Answer" until finish
Last edited by AUGE_OHR on Sun Dec 24, 2023 9:19 am, edited 1 time in total.
have fun
Jimmy
User avatar
serge_girard
Posts: 3170
Joined: Sun Nov 25, 2012 2:44 pm
DBs Used: 1 MySQL - MariaDB
2 DBF
Location: Belgium
Contact:

Re: how translate Fivewin "DLL FUNCTION" with Callback ?

Post by serge_girard »

thanks !
There's nothing you can do that can't be done...
edk
Posts: 914
Joined: Thu Oct 16, 2014 11:35 am
Location: Poland

Re: how translate Fivewin "DLL FUNCTION" with Callback ?

Post by edk »

Hi Jimmy. I'm trying to build an exe from your prg using hmg.3.6 by "bl64.bat AI_FORM.PRG" command but my 64-bit executable is larger than yours and it also gives me an error when calling llama64.dll

Code: Select all

Application Internal Error - c:\hmg.3.6\SAMPLES\AI_PHI_2\AI_FORM.exe
Terminated at: 2023-12-23 10:09:27
Unrecoverable error 6005: Exception error:

    Exception Code:C0000005 ACCESS_VIOLATION
    Exception Address:000000000A7A1790
    RAX:000000E83B9FD7A0  RBX:00000000000000C6  RCX:000000E83B9FD7A0  RDX:000002E606AC0000
    RSI:000002E60B2E60A0  RDI:000002E60B2500A0  RBP:000000E83B9FD740
    R8 :000002E606A212C0  R9 :0000000000000001  R10:0000000000008000  R11:000000E83B9FD610
    R12:000002E606B21180  R13:0000000000000001  R14:000000000000C800  R15:000000000000000C
    CS:RIP:0033:000000000A7A1790  SS:RSP:002B:000000E83B9FD638
    DS:002B  ES:002B  FS:0053  GS:002B
    Flags:00010246
    Exception Parameters: 0000000000000008 000000000A7A1790

Modules:
00007FF60A7A0000 0000000000336000 c:\hmg.3.6\SAMPLES\AI_PHI_2\AI_FORM.exe
00007FFC072D0000 00000000001F8000 C:\Windows\SYSTEM32\ntdll.dll
00007FFC05740000 00000000000BD000 C:\Windows\System32\KERNEL32.DLL
00007FFC04A90000 00000000002F6000 C:\Windows\System32\KERNELBASE.dll
00007FFC05C80000 00000000000AF000 C:\Windows\System32\ADVAPI32.dll
00007FFC058B0000 000000000009E000 C:\Windows\System32\msvcrt.dll
00007FFC05A40000 000000000009C000 C:\Windows\System32\sechost.dll
00007FFC05330000 0000000000126000 C:\Windows\System32\RPCRT4.dll
00007FFC061B0000 00000000000DA000 C:\Windows\System32\comdlg32.dll
00007FFC05DF0000 0000000000354000 C:\Windows\System32\combase.dll
00007FFC04FC0000 0000000000100000 C:\Windows\System32\ucrtbase.dll
00007FFC05990000 00000000000AD000 C:\Windows\System32\shcore.dll
00007FFC05AE0000 000000000019E000 C:\Windows\System32\USER32.dll
00007FFC052B0000 0000000000022000 C:\Windows\System32\win32u.dll
00007FFC05DC0000 000000000002C000 C:\Windows\System32\GDI32.dll
00007FFC04D90000 000000000011A000 C:\Windows\System32\gdi32full.dll
00007FFC04EB0000 000000000009D000 C:\Windows\System32\msvcp_win.dll
00007FFC068C0000 0000000000055000 C:\Windows\System32\SHLWAPI.dll
00007FFC06A40000 0000000000745000 C:\Windows\System32\SHELL32.dll
00007FFC06700000 000000000012B000 C:\Windows\System32\ole32.dll
00007FFC05460000 00000000000CD000 C:\Windows\System32\OLEAUT32.dll
00007FFBD94A0000 000000000029A000 C:\Windows\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.19041.3636_none_60b6a03d71f818d5\COMCTL32.dll
00007FFBD2E20000 0000000000007000 C:\Windows\SYSTEM32\MSIMG32.dll
00007FFBFC430000 000000000002B000 C:\Windows\SYSTEM32\MSVFW32.dll
00007FFBDCA30000 0000000000027000 C:\Windows\SYSTEM32\WINMM.dll
00007FFBDB6B0000 00000000000A5000 C:\Windows\SYSTEM32\WINSPOOL.DRV
00007FFC07200000 0000000000030000 C:\Windows\System32\IMM32.DLL
00007FFBEA740000 0000000000093000 C:\Program Files\ESET\ESET Security\ebehmoni.dll
00007FFBEA940000 000000000034D000 C:\Windows\SYSTEM32\Msftedit.dll
00007FFC03250000 0000000000012000 C:\Windows\SYSTEM32\kernel.appcore.dll
00007FFC050C0000 0000000000082000 C:\Windows\System32\bcryptPrimitives.dll
00007FFC01E60000 000000000009E000 C:\Windows\system32\uxtheme.dll
00007FFC06920000 0000000000114000 C:\Windows\System32\MSCTF.dll
00007FFBF0620000 00000000000AC000 C:\Windows\SYSTEM32\TextShaping.dll
00007FFBFBDC0000 00000000000F9000 C:\Windows\SYSTEM32\textinputframework.dll
00007FFC014C0000 000000000035B000 C:\Windows\System32\CoreUIComponents.dll
00007FFC01A10000 00000000000F2000 C:\Windows\System32\CoreMessaging.dll
00007FFC07190000 000000000006B000 C:\Windows\System32\WS2_32.dll
00007FFC03AD0000 0000000000033000 C:\Windows\SYSTEM32\ntmarta.dll
00007FFC00DF0000 0000000000155000 C:\Windows\SYSTEM32\wintypes.dll
00007FFBE98C0000 0000000000160000 c:\hmg.3.6\SAMPLES\AI_PHI_2\llama64.dll
00007FFBE0B30000 000000000008E000 C:\Windows\SYSTEM32\MSVCP140.dll
00007FFBF1900000 000000000001B000 C:\Windows\SYSTEM32\VCRUNTIME140.dll
00007FFBF0070000 000000000000C000 C:\Windows\SYSTEM32\VCRUNTIME140_1.dll

Called from HB_DYNCALL(0) in hbmisc\calldll.prg
Called from HB_DYNACALL1(0) in hbmisc\calldll.prg
Called from CALLDLL32(0) in hbmisc\calldll.prg
Called from LLAMA(116) in AI_FORM.PRG
Called from DOACTION(99) in AI_FORM.PRG
Called from (b)MAIN(59) in AI_FORM.PRG
Called from _DOCONTROLEVENTPROCEDURE(6056) in source\h_windows.prg
Called from EVENTS(1801) in source\h_windows.prg
Called from DOMESSAGELOOP(0) in source\h_windows.prg
Called from _ACTIVATEWINDOW(5717) in source\h_windows.prg
Called from MAIN(87) in AI_FORM.PRG
------------------------------------------------------------------------
Application Internal Error - c:\hmg.3.6\SAMPLES\AI_PHI_2\AI_FORM.exe
Terminated at: 2023-12-23 10:24:25
Unrecoverable error 6005: Exception error:

    Exception Code:C0000005 ACCESS_VIOLATION
    Exception Address:FFFFFFFF9E7A1790
    RAX:00000010A75FDE30  RBX:00000000000000C6  RCX:00000010A75FDE30  RDX:0000019B33FD0000
    RSI:0000019B389A99A0  RDI:0000019B389139A0  RBP:00000010A75FDDD0
    R8 :0000019B33F812C0  R9 :0000000000000001  R10:0000000000008000  R11:00000010A75FDCA0
    R12:0000019B34032910  R13:0000000000000001  R14:000000000000C800  R15:000000000000000C
    CS:RIP:0033:FFFFFFFF9E7A1790  SS:RSP:002B:00000010A75FDCC8
    DS:002B  ES:002B  FS:0053  GS:002B
    Flags:00010246
    Exception Parameters: 0000000000000008 FFFFFFFF9E7A1790

Modules:
00007FF69E7A0000 0000000000336000 c:\hmg.3.6\SAMPLES\AI_PHI_2\AI_FORM.exe
00007FFC072D0000 00000000001F8000 C:\Windows\SYSTEM32\ntdll.dll
00007FFC05740000 00000000000BD000 C:\Windows\System32\KERNEL32.DLL
00007FFC04A90000 00000000002F6000 C:\Windows\System32\KERNELBASE.dll
00007FFC05C80000 00000000000AF000 C:\Windows\System32\ADVAPI32.dll
00007FFC058B0000 000000000009E000 C:\Windows\System32\msvcrt.dll
00007FFC05A40000 000000000009C000 C:\Windows\System32\sechost.dll
00007FFC05330000 0000000000126000 C:\Windows\System32\RPCRT4.dll
00007FFC061B0000 00000000000DA000 C:\Windows\System32\comdlg32.dll
00007FFC05DF0000 0000000000354000 C:\Windows\System32\combase.dll
00007FFC04FC0000 0000000000100000 C:\Windows\System32\ucrtbase.dll
00007FFC05990000 00000000000AD000 C:\Windows\System32\shcore.dll
00007FFC05AE0000 000000000019E000 C:\Windows\System32\USER32.dll
00007FFC052B0000 0000000000022000 C:\Windows\System32\win32u.dll
00007FFC05DC0000 000000000002C000 C:\Windows\System32\GDI32.dll
00007FFC04D90000 000000000011A000 C:\Windows\System32\gdi32full.dll
00007FFC04EB0000 000000000009D000 C:\Windows\System32\msvcp_win.dll
00007FFC068C0000 0000000000055000 C:\Windows\System32\SHLWAPI.dll
00007FFC06A40000 0000000000745000 C:\Windows\System32\SHELL32.dll
00007FFC06700000 000000000012B000 C:\Windows\System32\ole32.dll
00007FFC05460000 00000000000CD000 C:\Windows\System32\OLEAUT32.dll
00007FFBD94A0000 000000000029A000 C:\Windows\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.19041.3636_none_60b6a03d71f818d5\COMCTL32.dll
00007FFBD2E20000 0000000000007000 C:\Windows\SYSTEM32\MSIMG32.dll
00007FFBFE120000 000000000002B000 C:\Windows\SYSTEM32\MSVFW32.dll
00007FFBDCA30000 0000000000027000 C:\Windows\SYSTEM32\WINMM.dll
00007FFBDB6B0000 00000000000A5000 C:\Windows\SYSTEM32\WINSPOOL.DRV
00007FFC07200000 0000000000030000 C:\Windows\System32\IMM32.DLL
00007FFBF1C60000 0000000000093000 C:\Program Files\ESET\ESET Security\ebehmoni.dll
00007FFBEA940000 000000000034D000 C:\Windows\SYSTEM32\Msftedit.dll
00007FFC03250000 0000000000012000 C:\Windows\SYSTEM32\kernel.appcore.dll
00007FFC050C0000 0000000000082000 C:\Windows\System32\bcryptPrimitives.dll
00007FFC01E60000 000000000009E000 C:\Windows\system32\uxtheme.dll
00007FFC06920000 0000000000114000 C:\Windows\System32\MSCTF.dll
00007FFBF0620000 00000000000AC000 C:\Windows\SYSTEM32\TextShaping.dll
00007FFBFBDC0000 00000000000F9000 C:\Windows\SYSTEM32\textinputframework.dll
00007FFC014C0000 000000000035B000 C:\Windows\System32\CoreUIComponents.dll
00007FFC01A10000 00000000000F2000 C:\Windows\System32\CoreMessaging.dll
00007FFC07190000 000000000006B000 C:\Windows\System32\WS2_32.dll
00007FFC03AD0000 0000000000033000 C:\Windows\SYSTEM32\ntmarta.dll
00007FFC00DF0000 0000000000155000 C:\Windows\SYSTEM32\wintypes.dll
00007FFBF1B00000 0000000000160000 c:\hmg.3.6\SAMPLES\AI_PHI_2\llama64.dll
00007FFBE0B30000 000000000008E000 C:\Windows\SYSTEM32\MSVCP140.dll
00007FFBF1900000 000000000001B000 C:\Windows\SYSTEM32\VCRUNTIME140.dll
00007FFBF0070000 000000000000C000 C:\Windows\SYSTEM32\VCRUNTIME140_1.dll

Called from HB_DYNCALL(0) in hbmisc\calldll.prg
Called from HB_DYNACALL1(0) in hbmisc\calldll.prg
Called from CALLDLL32(0) in hbmisc\calldll.prg
Called from LLAMA(116) in AI_FORM.PRG
Called from DOACTION(99) in AI_FORM.PRG
Called from (b)MAIN(59) in AI_FORM.PRG
Called from _DOCONTROLEVENTPROCEDURE(6056) in source\h_windows.prg
Called from EVENTS(1801) in source\h_windows.prg
Called from DOMESSAGELOOP(0) in source\h_windows.prg
Called from _ACTIVATEWINDOW(5717) in source\h_windows.prg
Called from MAIN(87) in AI_FORM.PRG
------------------------------------------------------------------------
It seems to me that in order to show the response in real time, you need to change the callback to

Code: Select all

CALLBACK( { | cStr | AI_FORM.cAnswer.SetFocus,;
	IF(cStr=CHR(10),cStr:=CRLF,cStr),;
	AI_FORM.cAnswer.Value := AI_FORM.cAnswer.Value + cStr, ;
	DoEvents() } )
but I cannot test it for the reason described above.
User avatar
AUGE_OHR
Posts: 2065
Joined: Sun Aug 25, 2019 3:12 pm
DBs Used: DBF, PostgreSQL, MySQL, SQLite
Location: Hamburg, Germany

Re: how translate Fivewin "DLL FUNCTION" with Callback ?

Post by AUGE_OHR »

edk wrote: Sat Dec 23, 2023 9:32 am Hi Jimmy. I'm trying to build an exe from your prg using hmg.3.6 by "bl64.bat AI_FORM.PRG" command but my 64-bit executable is larger than yours and it also gives me an error when calling llama64.dll

It seems to me that in order to show the response in real time, you need to change the callback to

Code: Select all

CALLBACK( { | cStr | AI_FORM.cAnswer.SetFocus,;
	IF(cStr=CHR(10),cStr:=CRLF,cStr),;
	AI_FORM.cAnswer.Value := AI_FORM.cAnswer.Value + cStr, ;
	DoEvents() } )
but I cannot test it for the reason described above.
hi Edward,

"where" do you get HMG v3.6 (!) ?

i had also Problem with llama64.dll so i build it myself follow Antonios Instruction
The reason why llama64.dll has to be created on everyone's PC is because it takes full advantage of your CPU features,
so if it does not work for you, then you have to build it yourself on your PC
---

https://forums.fivetechsupport.com/view ... =3&t=44028
Steps to build llama64.dll:

1. git clone https://github.com/ggerganov/llama.cpp

2. cd llama.cpp

3. mkdir temp

4. cd temp

5. cmake ..

6. open created llama.cpp.sln using Visual Studio and select "Release" at the top bar

7. On the project tree, right click on build_info, select properties and in C/C++ "code generation", "runtime library" select "Multi-threaded (/MT)"

8. On the project tree, right click on common, select properties and in C/C++ "code generation", "runtime library" select "Multi-threaded (/MT)"

8. On the project tree, right click on ggml, select properties and in C/C++ "code generation", "runtime library" select "Multi-threaded (/MT)"

10. On the project tree, right click on llama, select properties and in C/C++ "code generation", "runtime library" select "Multi-threaded (/MT)"

11. On the project tree, right click on simple, select properties and in C/C++ "code generation", "runtime library" select "Multi-threaded (/MT)"

12. On the project tree, click on simple and edit simple.cpp

13. Replace this code:

Code: Select all

    int main(int argc, char ** argv) {
        gpt_params params;

        if (argc == 1 || argv[1][0] == '-') {
            printf("usage: %s MODEL_PATH [PROMPT]\n" , argv[0]);
            return 1 ;
        }

        if (argc >= 2) {
            params.model = argv[1];
        }

        if (argc >= 3) {
            params.prompt = argv[2];
        }

        if (params.prompt.empty()) {
            params.prompt = "Hello my name is";
        }

        // total length of the sequence including the prompt
        const int n_len = 32;
with this one:

Code: Select all

    typedef void (*PFUNC) (char* szToken);

    extern "C" __declspec (dllexport) int Llama(char* szModel, char* szPrompt, PFUNC pCallBack) {
        gpt_params params;

        params.model = szModel;
        params.prompt = szPrompt;
        params.sparams.temp = 0.7;

        // total length of the sequence including the prompt
        const int n_len = 512;


14. Replace:
(in about line 133)

Code: Select all

    // LOG_TEE("%s", llama_token_to_piece(ctx, new_token_id).c_str());
with:

Code: Select all

    pCallBack((char*)llama_token_to_piece(ctx, new_token_id).c_str());
15. On the project tree, right click on simple , "Configuration properties", "general", "Configuration Type" and select "Dynamic Library (.dll)"

16. On the project tree, right click on simple , "Configuration properties", "Advanced", "Target File Extension" and select ".dll" intead of ".exe"

17. On the project tree, right click on simple and select "rebuild"

18. rename simple.dll as llama64.dll
---

you are right when add DO EVENTS into Callback it does show Answer in Realtime :)

but it does not "scroll" TEXT ...
have fun
Jimmy
edk
Posts: 914
Joined: Thu Oct 16, 2014 11:35 am
Location: Poland

Re: how translate Fivewin "DLL FUNCTION" with Callback ?

Post by edk »

AUGE_OHR wrote: Sat Dec 23, 2023 11:58 pm
hi Edward,

"where" do you get HMG v3.6 (!) ?
Did you miss the information about the latest version of HMG?
https://www.hmgforum.com/viewtopic.php?t=7433
User avatar
AUGE_OHR
Posts: 2065
Joined: Sun Aug 25, 2019 3:12 pm
DBs Used: DBF, PostgreSQL, MySQL, SQLite
Location: Hamburg, Germany

Re: how translate Fivewin "DLL FUNCTION" with Callback ?

Post by AUGE_OHR »

hi Edward,
edk wrote: Sun Dec 24, 2023 7:52 am Did you miss the information about the latest version of HMG?
https://www.hmgforum.com/viewtopic.php?t=7433
Indeed, i have not installed HMG 3.6 (yet) ...
have fun
Jimmy
Post Reply