AMD Athlon 64 & WinXP

AMD Athlon 64 & WinXP

Postby Rimantas » Thu Dec 01, 2005 2:28 pm

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 .
Rimantas U.
User avatar
Rimantas
 
Posts: 437
Joined: Fri Oct 07, 2005 12:56 pm
Location: Utena , Lithuania

Postby Antonio Linares » Fri Dec 02, 2005 8:14 pm

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 ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42118
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby Rimantas » Sun Dec 04, 2005 8:21 am

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  Expand view  RUN

::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 .
Rimantas U.
User avatar
Rimantas
 
Posts: 437
Joined: Fri Oct 07, 2005 12:56 pm
Location: Utena , Lithuania

Postby Rimantas » Fri Dec 09, 2005 5:52 am

Hello again ! I did here some changes and that worked . I don't know why .

Code: Select all  Expand view  RUN

::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
Rimantas U.
User avatar
Rimantas
 
Posts: 437
Joined: Fri Oct 07, 2005 12:56 pm
Location: Utena , Lithuania

Postby Antonio Linares » Fri Dec 09, 2005 11:22 pm

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 :)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42118
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby Rimantas » Sat Dec 10, 2005 9:21 am

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 !
Rimantas U.
User avatar
Rimantas
 
Posts: 437
Joined: Fri Oct 07, 2005 12:56 pm
Location: Utena , Lithuania

Postby Enrico Maria Giordano » Sat Dec 10, 2005 12:39 pm

SysWait()

EMG
User avatar
Enrico Maria Giordano
 
Posts: 8718
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia

Postby Antonio Linares » Sat Dec 10, 2005 1:20 pm

You may try with SysRefresh() also.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42118
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby Rimantas » Sat Dec 10, 2005 5:52 pm

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 !
Rimantas U.
User avatar
Rimantas
 
Posts: 437
Joined: Fri Oct 07, 2005 12:56 pm
Location: Utena , Lithuania


Return to FiveWin for Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 49 guests