Page 2 of 3

Re: Harbour MiniGUI Extended Edition build 17.08 is published

Posted: Sat Sep 02, 2017 9:43 am
by bpd2000
gfilatov wrote: Thu Aug 31, 2017 1:44 pm
bpd2000 wrote: Thu Aug 31, 2017 1:06 pm
Can you help us to convert ps32demo to HMG
Hi Dave,
You can do it yoursselves. :o
Thank you for the tip
Adopted to HMG
http://www.hmgforum.com/viewtopic.php?f=11&t=5401

Re: Harbour MiniGUI Extended Edition build 17.08 is published

Posted: Sat Sep 02, 2017 12:24 pm
by gfilatov
bpd2000 wrote: Sat Sep 02, 2017 9:43 am Adopted to HMG
Hi Dave,

OK, good job :!:

Re: Harbour MiniGUI Extended Edition build 17.08 is published

Posted: Mon Sep 11, 2017 10:12 pm
by BeGeS
gfilatov wrote: Thu Aug 31, 2017 9:46 am ...and Minigui Ex build for the free Embarcadero C++ 10.1 Berlin compiler at
the Minigui's download page.
Mr. Filatov:

Does that mean that Borland C++ 5.5 and Embarcadero C++ 10.1 can be used indistinctly?

(I already tried it and the answer is YES, but with a small program. Maybe with a more complex one it is not the same).

And if so, what is your recommendation?

Thank you.

Re: Harbour MiniGUI Extended Edition build 17.08 is published

Posted: Tue Sep 12, 2017 9:30 am
by gfilatov
BeGeS wrote: Mon Sep 11, 2017 10:12 pm ...
And if so, what is your recommendation?
Hello,

Thanks for your interest!

My recommendation is to use MinGW 7.1.0 or MS VisualC 2017 because they are the speedier C-compilers (take a look for the comparison tests below) 8-)
2017-04-22 16:59:40 Windows 7 6.1.7601 Service Pack 1
Harbour 3.2.0dev (r1704200801) Borland C++ 5.5.1 (32-bit) x86
THREADS: 0
N_LOOPS: 1000000
[ T000: empty loop overhead ]...................................0.05
====================================================================
[ T001: x := L_C ]..............................................0.02
[ T002: x := L_N ]..............................................0.00
[ T003: x := L_D ]..............................................0.03
[ T004: x := S_C ]..............................................0.03
[ T005: x := S_N ]..............................................0.03
[ T006: x := S_D ]..............................................0.03
[ T007: x := M->M_C ]...........................................0.05
[ T008: x := M->M_N ]...........................................0.03
[ T009: x := M->M_D ]...........................................0.03
[ T010: x := M->P_C ]...........................................0.03
[ T011: x := M->P_N ]...........................................0.03
[ T012: x := M->P_D ]...........................................0.03
[ T013: x := F_C ]..............................................0.02
[ T014: x := F_N ]..............................................0.02
[ T015: x := F_D ]..............................................0.02
[ T016: x := o:Args ]...........................................0.14
[ T017: x := o[ 2 ] ]...........................................0.09
[ T018: Round( i / 1000, 2 ) ]..................................0.22
[ T019: Str( i / 1000 ) ].......................................0.59
[ T020: Val( s ) ]..............................................0.23
[ T021: Val( a [ i % 16 + 1 ] ) ]...............................0.39
[ T022: DToS( d - i % 10000 ) ].................................0.58
[ T023: Eval( {|| i % 16 } ) ]..................................0.34
[ T024: Eval( bc := {|| i % 16 } ) ]............................0.22
[ T025: Eval( {| x | x % 16 }, i ) ]............................0.28
[ T026: Eval( bc := {| x | x % 16 }, i ) ]......................0.22
[ T027: Eval( {| x | f1( x ) }, i ) ]...........................0.34
[ T028: Eval( bc := {| x | f1( x ) }, i ) ].....................0.27
[ T029: Eval( bc := &( "{| x | f1( x ) }" ), i ) ]..............0.28
[ T030: x := &( "f1(" + Str( i ) + ")" ) ]......................2.54
[ T031: bc := &( "{| x | f1( x ) }" ), Eval( bc, i ) ]..........2.81
[ T032: x := ValType( x ) + ValType( i ) ]......................0.33
[ T033: x := StrZero( i % 100, 2 ) $ a[ i % 16 + 1 ] ]..........0.69
[ T034: x := a[ i % 16 + 1 ] == s ].............................0.27
[ T035: x := a[ i % 16 + 1 ] = s ]..............................0.31
[ T036: x := a[ i % 16 + 1 ] >= s ].............................0.30
[ T037: x := a[ i % 16 + 1 ] <= s ].............................0.31
[ T038: x := a[ i % 16 + 1 ] < s ]..............................0.30
[ T039: x := a[ i % 16 + 1 ] > s ]..............................0.30
[ T040: AScan( a, i % 16 ) ]....................................0.30
[ T041: AScan( a, {| x | x == i % 16 } ) ]......................2.48
[ T042: iif( i % 1000 == 0, a := {}, ), AAdd(a,{i,1,.T.,s, ]....0.76
[ T043: x := a ]................................................0.03
[ T044: x := {} ]...............................................0.09
[ T045: f0() ]..................................................0.03
[ T046: f1( i ) ]...............................................0.09
[ T047: f2( c[1...8] ) ]........................................0.09
[ T048: f2( c[1...40000] ) ]....................................0.08
[ T049: f2( @c[1...40000] ) ]...................................0.06
[ T050: f2( @c[1...40000] ), c2 := c ]..........................0.11
[ T051: f3( a, a2, s, i, s2, bc, i, n, x ) ]....................0.36
[ T052: f2( a ) ]...............................................0.09
[ T053: x := f4() ].............................................0.61
[ T054: x := f5() ].............................................0.19
[ T055: x := Space( 16 ) ]......................................0.14
[ T056: f_prv( c ) ]............................................0.31
====================================================================
[ total application time: ]....................................21.18
[ total real time: ]...........................................21.35

2017-04-22 16:57:35 Windows 7 6.1 SP1
Harbour 3.4.0dev (5d434cf) (2017-04-21 13:34) MinGW GNU C 6.3 (32-bit) x86
THREADS: 0
N_LOOPS: 1000000
[ T000: empty loop overhead ]...................................0.03
====================================================================
[ T001: x := L_C ]..............................................0.02
[ T002: x := L_N ]..............................................0.00
[ T003: x := L_D ]..............................................0.00
[ T004: x := S_C ]..............................................0.02
[ T005: x := S_N ]..............................................0.03
[ T006: x := S_D ]..............................................0.00
[ T007: x := M->M_C ]...........................................0.03
[ T008: x := M->M_N ]...........................................0.03
[ T009: x := M->M_D ]...........................................0.02
[ T010: x := M->P_C ]...........................................0.03
[ T011: x := M->P_N ]...........................................0.02
[ T012: x := M->P_D ]...........................................0.02
[ T013: x := F_C ]..............................................0.00
[ T014: x := F_N ]..............................................0.02
[ T015: x := F_D ]..............................................0.02
[ T016: x := o:Args ]...........................................0.09
[ T017: x := o[ 2 ] ]...........................................0.08
[ T018: Round( i / 1000, 2 ) ]..................................0.12
[ T019: Str( i / 1000 ) ].......................................0.37
[ T020: Val( s ) ]..............................................0.19
[ T021: Val( a [ i % 16 + 1 ] ) ]...............................0.28
[ T022: DToS( d - i % 10000 ) ].................................0.30
[ T023: Eval( {|| i % 16 } ) ]..................................0.23
[ T024: Eval( bc := {|| i % 16 } ) ]............................0.16
[ T025: Eval( {| x | x % 16 }, i ) ]............................0.20
[ T026: Eval( bc := {| x | x % 16 }, i ) ]......................0.16
[ T027: Eval( {| x | f1( x ) }, i ) ]...........................0.22
[ T028: Eval( bc := {| x | f1( x ) }, i ) ].....................0.19
[ T029: Eval( bc := &( "{| x | f1( x ) }" ), i ) ]..............0.17
[ T030: x := &( "f1(" + Str( i ) + ")" ) ]......................1.61
[ T031: bc := &( "{| x | f1( x ) }" ), Eval( bc, i ) ]..........1.89
[ T032: x := ValType( x ) + ValType( i ) ]......................0.22
[ T033: x := StrZero( i % 100, 2 ) $ a[ i % 16 + 1 ] ]..........0.47
[ T034: x := a[ i % 16 + 1 ] == s ].............................0.16
[ T035: x := a[ i % 16 + 1 ] = s ]..............................0.19
[ T036: x := a[ i % 16 + 1 ] >= s ].............................0.19
[ T037: x := a[ i % 16 + 1 ] <= s ].............................0.17
[ T038: x := a[ i % 16 + 1 ] < s ]..............................0.17
[ T039: x := a[ i % 16 + 1 ] > s ]..............................0.19
[ T040: AScan( a, i % 16 ) ]....................................0.17
[ T041: AScan( a, {| x | x == i % 16 } ) ]......................1.72
[ T042: iif( i % 1000 == 0, a := {}, ), AAdd(a,{i,1,.T.,s, ]....0.51
[ T043: x := a ]................................................0.03
[ T044: x := {} ]...............................................0.05
[ T045: f0() ]..................................................0.03
[ T046: f1( i ) ]...............................................0.06
[ T047: f2( c[1...8] ) ]........................................0.05
[ T048: f2( c[1...40000] ) ]....................................0.06
[ T049: f2( @c[1...40000] ) ]...................................0.05
[ T050: f2( @c[1...40000] ), c2 := c ]..........................0.06
[ T051: f3( a, a2, s, i, s2, bc, i, n, x ) ]....................0.22
[ T052: f2( a ) ]...............................................0.06
[ T053: x := f4() ].............................................0.27
[ T054: x := f5() ].............................................0.12
[ T055: x := Space( 16 ) ]......................................0.11
[ T056: f_prv( c ) ]............................................0.19
====================================================================
[ total application time: ]....................................13.76
[ total real time: ]...........................................13.96

2017-04-22 16:56:10 Windows 7 6.1.7601 Service Pack 1
Harbour 3.2.0dev (r1704151935) Microsoft Visual C++ 19.0.24215 (32-bit) x86
THREADS: 0
N_LOOPS: 1000000
[ T000: empty loop overhead ]...................................0.03
====================================================================
[ T001: x := L_C ]..............................................0.02
[ T002: x := L_N ]..............................................0.02
[ T003: x := L_D ]..............................................0.00
[ T004: x := S_C ]..............................................0.03
[ T005: x := S_N ]..............................................0.03
[ T006: x := S_D ]..............................................0.02
[ T007: x := M->M_C ]...........................................0.05
[ T008: x := M->M_N ]...........................................0.02
[ T009: x := M->M_D ]...........................................0.03
[ T010: x := M->P_C ]...........................................0.05
[ T011: x := M->P_N ]...........................................0.02
[ T012: x := M->P_D ]...........................................0.03
[ T013: x := F_C ]..............................................0.02
[ T014: x := F_N ]..............................................0.03
[ T015: x := F_D ]..............................................0.00
[ T016: x := o:Args ]...........................................0.11
[ T017: x := o[ 2 ] ]...........................................0.06
[ T018: Round( i / 1000, 2 ) ]..................................0.14
[ T019: Str( i / 1000 ) ].......................................0.36
[ T020: Val( s ) ]..............................................0.19
[ T021: Val( a [ i % 16 + 1 ] ) ]...............................0.31
[ T022: DToS( d - i % 10000 ) ].................................0.45
[ T023: Eval( {|| i % 16 } ) ]..................................0.27
[ T024: Eval( bc := {|| i % 16 } ) ]............................0.16
[ T025: Eval( {| x | x % 16 }, i ) ]............................0.23
[ T026: Eval( bc := {| x | x % 16 }, i ) ]......................0.16
[ T027: Eval( {| x | f1( x ) }, i ) ]...........................0.23
[ T028: Eval( bc := {| x | f1( x ) }, i ) ].....................0.17
[ T029: Eval( bc := &( "{| x | f1( x ) }" ), i ) ]..............0.20
[ T030: x := &( "f1(" + Str( i ) + ")" ) ]......................1.59
[ T031: bc := &( "{| x | f1( x ) }" ), Eval( bc, i ) ]..........1.92
[ T032: x := ValType( x ) + ValType( i ) ]......................0.23
[ T033: x := StrZero( i % 100, 2 ) $ a[ i % 16 + 1 ] ]..........0.45
[ T034: x := a[ i % 16 + 1 ] == s ].............................0.20
[ T035: x := a[ i % 16 + 1 ] = s ]..............................0.22
[ T036: x := a[ i % 16 + 1 ] >= s ].............................0.22
[ T037: x := a[ i % 16 + 1 ] <= s ].............................0.22
[ T038: x := a[ i % 16 + 1 ] < s ]..............................0.20
[ T039: x := a[ i % 16 + 1 ] > s ]..............................0.27
[ T040: AScan( a, i % 16 ) ]....................................0.23
[ T041: AScan( a, {| x | x == i % 16 } ) ]......................1.84
[ T042: iif( i % 1000 == 0, a := {}, ), AAdd(a,{i,1,.T.,s, ]....0.55
[ T043: x := a ]................................................0.03
[ T044: x := {} ]...............................................0.08
[ T045: f0() ]..................................................0.03
[ T046: f1( i ) ]...............................................0.08
[ T047: f2( c[1...8] ) ]........................................0.08
[ T048: f2( c[1...40000] ) ]....................................0.08
[ T049: f2( @c[1...40000] ) ]...................................0.06
[ T050: f2( @c[1...40000] ), c2 := c ]..........................0.09
[ T051: f3( a, a2, s, i, s2, bc, i, n, x ) ]....................0.23
[ T052: f2( a ) ]...............................................0.08
[ T053: x := f4() ].............................................0.28
[ T054: x := f5() ].............................................0.12
[ T055: x := Space( 16 ) ]......................................0.11
[ T056: f_prv( c ) ]............................................0.22
====================================================================
[ total application time: ]....................................14.84
[ total real time: ]...........................................15.17

2017-04-22 17:02:48 Windows 7 6.1.7601 Service Pack 1
Harbour 3.2.0dev (r1703151339) LLVM/Clang C 3.3.1 (35832.6139226.5cda94d) (32-bit) x86
THREADS: 0
N_LOOPS: 1000000
[ T000: empty loop overhead ]...................................0.02
====================================================================
[ T001: x := L_C ]..............................................0.06
[ T002: x := L_N ]..............................................0.05
[ T003: x := L_D ]..............................................0.03
[ T004: x := S_C ]..............................................0.06
[ T005: x := S_N ]..............................................0.05
[ T006: x := S_D ]..............................................0.05
[ T007: x := M->M_C ]...........................................0.06
[ T008: x := M->M_N ]...........................................0.05
[ T009: x := M->M_D ]...........................................0.05
[ T010: x := M->P_C ]...........................................0.06
[ T011: x := M->P_N ]...........................................0.03
[ T012: x := M->P_D ]...........................................0.06
[ T013: x := F_C ]..............................................0.03
[ T014: x := F_N ]..............................................0.05
[ T015: x := F_D ]..............................................0.03
[ T016: x := o:Args ]...........................................0.16
[ T017: x := o[ 2 ] ]...........................................0.09
[ T018: Round( i / 1000, 2 ) ]..................................0.20
[ T019: Str( i / 1000 ) ].......................................0.67
[ T020: Val( s ) ]..............................................0.20
[ T021: Val( a [ i % 16 + 1 ] ) ]...............................0.37
[ T022: DToS( d - i % 10000 ) ].................................0.41
[ T023: Eval( {|| i % 16 } ) ]..................................0.30
[ T024: Eval( bc := {|| i % 16 } ) ]............................0.20
[ T025: Eval( {| x | x % 16 }, i ) ]............................0.25
[ T026: Eval( bc := {| x | x % 16 }, i ) ]......................0.20
[ T027: Eval( {| x | f1( x ) }, i ) ]...........................0.27
[ T028: Eval( bc := {| x | f1( x ) }, i ) ].....................0.23
[ T029: Eval( bc := &( "{| x | f1( x ) }" ), i ) ]..............0.22
[ T030: x := &( "f1(" + Str( i ) + ")" ) ]......................1.81
[ T031: bc := &( "{| x | f1( x ) }" ), Eval( bc, i ) ]..........2.07
[ T032: x := ValType( x ) + ValType( i ) ]......................0.25
[ T033: x := StrZero( i % 100, 2 ) $ a[ i % 16 + 1 ] ]..........0.73
[ T034: x := a[ i % 16 + 1 ] == s ].............................0.27
[ T035: x := a[ i % 16 + 1 ] = s ]..............................0.30
[ T036: x := a[ i % 16 + 1 ] >= s ].............................0.30
[ T037: x := a[ i % 16 + 1 ] <= s ].............................0.30
[ T038: x := a[ i % 16 + 1 ] < s ]..............................0.28
[ T039: x := a[ i % 16 + 1 ] > s ]..............................0.30
[ T040: AScan( a, i % 16 ) ]....................................0.25
[ T041: AScan( a, {| x | x == i % 16 } ) ]......................1.97
[ T042: iif( i % 1000 == 0, a := {}, ), AAdd(a,{i,1,.T.,s, ]....0.62
[ T043: x := a ]................................................0.05
[ T044: x := {} ]...............................................0.09
[ T045: f0() ]..................................................0.05
[ T046: f1( i ) ]...............................................0.09
[ T047: f2( c[1...8] ) ]........................................0.09
[ T048: f2( c[1...40000] ) ]....................................0.08
[ T049: f2( @c[1...40000] ) ]...................................0.08
[ T050: f2( @c[1...40000] ), c2 := c ]..........................0.11
[ T051: f3( a, a2, s, i, s2, bc, i, n, x ) ]....................0.31
[ T052: f2( a ) ]...............................................0.08
[ T053: x := f4() ].............................................0.41
[ T054: x := f5() ].............................................0.17
[ T055: x := Space( 16 ) ]......................................0.14
[ T056: f_prv( c ) ]............................................0.23
====================================================================
[ total application time: ]....................................16.80
[ total real time: ]...........................................17.02
Hope that useful :idea:

Re: Harbour MiniGUI Extended Edition build 17.08 is published

Posted: Thu Sep 14, 2017 9:05 am
by BeGeS
Thank you for such a detailed response. ;)

However, my question was not related to speed (of relative importance) but to the final result: the executable program.

The doubt arises because I do not understand why HMG Extended is offered with two compilers, being 10.1 the modern version (2016) of 5.5 (2000), father and son of the same family. The logical thing would be to default the most current, right?

I've been watching and doing tests. The folders \LIB, both MiniGUI and Harbour, have the same similarity as a crocodile and a pepper (they are long and green...), and the size difference of hbmk2 I do not understand it, so I deduce that there are two different packages that do not even share \SOURCE to 100%, resulting in different minigui.lib

Needless to say I tried to ride a hybrid, but without any success. :oops:

So I stay as I am, with the "main" package and Borland 5.5 :D

P.S .: You do not have to thank me for my interest. No way. Unlike, is me who is very grateful to you for your work. And now that no one is listening, I confess that I've moved from HMG Official to HMG Extended. I have only a short time with the GUI and I can afford it. Many things that I was looking for and did not find, were in the house next door. :o :!: :idea:

Re: Harbour MiniGUI Extended Edition build 17.08 is published

Posted: Thu Sep 14, 2017 9:57 am
by gfilatov
BeGeS wrote: Thu Sep 14, 2017 9:05 am The doubt arises because I do not understand why HMG Extended is offered with two compilers, being 10.1 the modern version (2016) of 5.5 (2000), father and son of the same family. The logical thing would be to default the most current, right?
Hello,

Thanks for your kind words!

There are a few reasons for it.

1) BCC 5.5 is most often used by MiniGUI users :)

2) Harbour 3.2 is not supoorted BCC 10.1 officially (and therefore I doing Harbour build for BCC 10.1 with a trick).

3) BCC 5.5 works on the ALL Windows platforms (since Win 98 to Win 10) but BCC 10.1 supports since Windows Vista only.

And you are right about a different packages:
for BCC 5.5 it is a stable and for BCC 10.1 it's a test. :o

BTW I saw a growing interest to MinGW-based build of MiniGUI Ex at http://sourceforge.net/projects/hbpidew/

Re: Harbour MiniGUI Extended Edition build 17.08 is published

Posted: Thu Sep 14, 2017 8:44 pm
by BeGeS
gfilatov wrote: Thu Sep 14, 2017 9:57 am Harbour 3.2 is not supoorted BCC 10.1 officially (and therefore I doing Harbour build for BCC 10.1 with a trick).
That clarifies everything. :lol:

gfilatov wrote: Thu Sep 14, 2017 9:57 am BCC 5.5 works on the ALL Windows platforms (since Win 98 to Win 10) but BCC 10.1 supports since Windows Vista only.
Powerful reason. I had not thought about it, and there are still many machines that work (and well) with WXP.

gfilatov wrote: Thu Sep 14, 2017 9:57 am BTW I saw a growing interest to MinGW-based build of MiniGUI Ex at http://sourceforge.net/projects/hbpidew/
This is a excellent news.


The compiler issue was just curiousity. It is settled and well explained. Now what I have to do is start studying. :geek:

Thank you very much. ;)

Re: Harbour MiniGUI Extended Edition build 17.08 is published

Posted: Fri Sep 15, 2017 5:41 pm
by PeteWG
BeGeS wrote: Thu Sep 14, 2017 8:44 pm
gfilatov wrote: Thu Sep 14, 2017 9:57 am BTW I saw a growing interest to MinGW-based build of MiniGUI Ex at http://sourceforge.net/projects/hbpidew/
This is a excellent news.
Hi,
just a clarification: the above link at sourceforge refers to a quite old bundle of MiniGui-ex
pre-compiled with MinGW gcc compiler.
I was maintaining it for some years ago, as an alternative to bcc bundle.
About a year and a half ago I have ported it to GitHub and it can be reached using this link (MgM).
Currently, it includes Minigui version 17.06u2 (Jun 2017), along with MinGW32 7.1.0 and Harbour 3.4.0dev (Viktor's fork).

regards,
Pete

Re: Harbour MiniGUI Extended Edition build 17.08 is published

Posted: Sun Sep 17, 2017 7:23 pm
by BeGeS
PeteWG wrote: Fri Sep 15, 2017 5:41 pm ... and Harbour 3.4.0dev (Viktor's fork).
Pete, I take this opportunity to ask you a question:
Has there been any schism within the Harbour Project?
Do Szakáts and Czerpak walk each one for their side? :(

Re: Harbour MiniGUI Extended Edition build 17.08 is published

Posted: Mon Sep 18, 2017 1:12 pm
by PeteWG
BeGeS wrote: Sun Sep 17, 2017 7:23 pm Has there been any schism within the Harbour Project?
Do Szakáts and Czerpak walk each one for their side? :(
Hi,
I wouldn't say that. Besides, I cannot and I won't speak on behalf of Viktor or Czerpak,
(or anybody other) regarding their plans and moves. And especially when I'm not aware
of anything relevant to what you are wondering, about "schism" or whatever.
Both of them have been and still are the major core-developers and Harbour leaders.
As far as I know, Viktor created 3.4 as a fork of the upstream "official" Harbour project (known as 3.2).
This is a very usual practice in the realm of open-source software;
in fact, "forking" an existing project, most of the times (if not always), is a welcomed
and encouraged tactic, which helps towards more active contributions
and enhancements of the original code-base.

regards,
Pete