Page 1 of 1

AMD Athlon 64 & WinXP

Posted: Thu Dec 01, 2005 2:28 pm
by Rimantas
Hi ! One customer bought a new PC with AMD Athlon 64 & XP . He said that my application hangs up at worktime . Most bad situations - closing mdichild window . And if close with mouse cursor on window "close" at right top of window . Pressing Esc - sometime works fine , sometimes hangs up . With others PCs application is working fine . Application is running on Win2000 server shared directory , RDD - CDX .

What you can say about that ?

BCC 5.5 , xHarbour from CVS , FiveWin 2.5 of 2004 year .

With best regards ! Rimantas .

Posted: Fri Dec 02, 2005 8:14 pm
by Antonio Linares
Rimantas,

We use AMD 64 bits (3400+) and it works excellent with FWH, etc.

Do you have a demo of your app we may download to test it ?

Posted: Sun Dec 04, 2005 8:21 am
by Rimantas
Antonio Linares wrote: We use AMD 64 bits (3400+) and it works excellent with FWH, etc.

Do you have a demo of your app we may download to test it ?
Hello Antonio ! Sorry , but I can't to do demo . Of course , my mdichilds are related to my others functions . At first , in most of them I use browse ( Hernan's ) and then user close window , application is saving columns sizes and places of this browse for this user and windows coords . I have one a big class for my needs , where I'm openning mdichilds and browses , folders and browses in folders . My source of standard windows bValid looks that:

Code: Select all


::oWnd:bValid     := { || ( ::End(), .t. ) }

METHOD End() CLASS TMyBasic

   local cCrg := ::cCargo
   local n := m := z := 0
   local oWnd
   local lRest := .f.
   local aCols := {}

   if ::bEnd !=NIL // own bEnd codeblock if it's needful to do something before
      eval( ::bEnd )
   endif

   if ::oWnd != NIL
      if ::lEnv
         if wind_save( ::cCargo, ::oWnd ) // saving windows coords
            for n := 1 to len( ::aBrwID ) // array of browse objects
               aCols := {}
               for m := 1 to len( ::aHdrs[ n ] )
                  z := ascan( ::aHdrs[ n ], ::aColHdr[ n ][ m ] )
                  aadd( aCols, { m, z } )
               next

               wbrw_save( ::cCargo, ::aBrwID[ n ], ::oBrw[ n ], aCols ) // saving columns places and sizes for browse and user

               if ::aOrdCnd[ n ] # NIL .and. ::aOrdCnd[ n, 1 ]
                  ::BrwOrdRem( n ) // removing temporary index filess
               endif
            next
         endif
      endif
      if IsZoomed( ::oWnd:hWnd ) == .t. .and. ::lFld
         lRest := .t.
         ::oWnd:Hide()
         ::oWnd:Restore()
      endif
      ::LstFcs()
     else
      MsgInf( "Can't detec window !", 2 )
   endif
   if ::bEndPst !=NIL
      eval( ::bEndPst )
   endif
   ::lEnd := .t.
   oApp:OpWd( cCrg,, 2 ) // removing mdi child object from object repository . 
   if ::nWd == 1 // if i's mdichild ( it can be also dialog )
      do while PostMessage( ::oWnd:hWnd, WM_CLOSE ) # 1
      enddo
   endif
   Self := NIL
   if lRest .and. len( wndMain():oWndClient:aWnd ) > 0
      wndMain():oWndClient:PrevWindow()
      wndMain():oWndClient:GetActive():Maximize()
   endif
return( NIL )

I can send to you the full source of and some data . So you can build appl. in your PC . Is that way fit to you ? It take about 1.5 Mb of zip .

With best regards ! Rimantas .

Posted: Fri Dec 09, 2005 5:52 am
by Rimantas
Hello again ! I did here some changes and that worked . I don't know why .

Code: Select all


::oWnd:bValid     := { || ( ::End(), .t. ) }

METHOD End() CLASS TMyBasic

   local cCrg := ::cCargo
   local n := m := z := 0
   local oWnd
   local aCols := {}

   if ::bEnd !=NIL
      eval( ::bEnd )
   endif

   if ::oWnd != NIL
      if ::lEnv
         MsgWait( "Please , one moment ... ",, .01 )
         if wind_save( ::cCargo, ::oWnd ) // saving windows coords
            for n := 1 to len( ::aBrwID ) // array of browse objects
               aCols := {}
               for m := 1 to len( ::aHdrs[ n ] )
                  z := ascan( ::aHdrs[ n ], ::aColHdr[ n ][ m ] )
                  aadd( aCols, { m, z } )
               next

               wbrw_save( ::cCargo, ::aBrwID[ n ], ::oBrw[ n ], aCols )

               if ::aOrdCnd[ n ] # NIL .and. ::aOrdCnd[ n, 1 ]
                  ::BrwOrdRem( n ) // removing temporary index filess
               endif
            next
         endif
      endif
      ::LstFcs()
     else
      MsgInf( "Can't detec window !", 2 )
   endif
   if ::bEndPst !=NIL
      eval( ::bEndPst )
   endif
   ::lEnd := .t.
   if ::nWd == 1
      do while PostMessage( ::oWnd:hWnd, WM_CLOSE ) # 1
      enddo
   endif
   MsgWait( "Please , one moment ... ",, .01 )
   oApp:OpWd( cCrg,, 2 )
   Self := NIL
return( NIL )

Simply I added MsgWait( ) function . Now it works OK . The interval of MsgWait() is very shortly - .01 of second . I decided to add this function , because if I check sources ( that ussually I'm doing with MsgInfo() ) , then all is working OK . So it comes an idea to the mind , that here it's needful something similar to time delay . Maybe you have some ideas , why this delay helped to me ?

With best regards ! Rimantas

Posted: Fri Dec 09, 2005 11:22 pm
by Antonio Linares
Rimantas,

The AMD 64 is a very fast machine. Maybe it needs some time to peform some operations and the function call helped there.

Glad to know you solved it :)

Posted: Sat Dec 10, 2005 9:21 am
by Rimantas
Antonio Linares wrote:
The AMD 64 is a very fast machine. Maybe it needs some time to peform some operations and the function call helped there.

Glad to know you solved it :)
Hello Antonio ! Can you advice , what function I can use instead MsgWait . I don't want to see that short "blink" of dissapering MsgWait() function .

With best regards !

Posted: Sat Dec 10, 2005 12:39 pm
by Enrico Maria Giordano
SysWait()

EMG

Posted: Sat Dec 10, 2005 1:20 pm
by Antonio Linares
You may try with SysRefresh() also.

Posted: Sat Dec 10, 2005 5:52 pm
by Rimantas
Antonio Linares wrote:You may try with SysRefresh() also.
Thank you , Antonio and Enrico ! I choosed SysWait() . It seems that this is working fine .

With best regards !