Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.

Xeffort issues

Neels
New Contributor II
3,674 Views

With the latest compiler updates on the latest Windows 10 machines I get the following:

  1. The main program does not start executing after closing the dialog box using the original lib,
  2. Recompiling Xeffort with the latest compiler it does now start the main program but,
  3. Now the Xmessagebox appears but has no text displayed nor any buttons or icons.

Are there other users of Xeffort that can help or maybe Steve can have a look?

0 Kudos
50 Replies
Steve_Lionel
Honored Contributor III
1,698 Views

I tried a couple of the sample Xeffort projects (tbtest and xgraph) and, once I adjusted for the compiler now checking consistency of INTENT for passed-procedure dummy arguments, both worked fine. I used the latest Xeffort_IVF11_1225.exe installer and didn't rebuild any of Xeffort. I am using compiler 19.0.1 on Windows 10 1809.

Can you put together a small example project that demonstrates the problem?

0 Kudos
Neels
New Contributor II
1,698 Views

My problem with the Win10 issue I cannot reproduce. Of a user base of more than 400 worldwide I have 3 users reporting the issue. They all have new computers with the latest Win10 loaded.

When I try to compile Xeffort I get error messages. Can you please try to compile it and suggest how to fix the errors? I use the latest compiler.

0 Kudos
andrew_4619
Honored Contributor II
1,698 Views

Neels, you should at least post (in full) some of the error messages that you get otherwise anyone trying to help is flying blind.

0 Kudos
Neels
New Contributor II
1,698 Views

Andrew, I will. I am currently about 5 hours from the computer with the software. I will post as soon as I can.

0 Kudos
Steve_Lionel
Honored Contributor III
1,698 Views

The problems begin in module XFTStrings, which has the following:

RECURSIVE FUNCTION XLoadString(ID, hModule) RESULT(s)

INTEGER, INTENT(IN)::             ID
INTEGER, OPTIONAL, INTENT(IN)::   hModule

CHARACTER(LEN=PXLoadStringLen(ID, hModule))::   s

...

The compiler complains:

error #6582: A dummy argument which has the OPTIONAL or the INTENT(OUT) attribute is not allowed in this specification expression.   [HMODULE]

which it is correct in doing so. It will take me a while to sort this out - and see what else is lurking. In the meantime I recommend simply using the prebuilt libraries and modules from the installer.

0 Kudos
Steve_Lionel
Honored Contributor III
1,698 Views

FWIW, I received an email a few weeks ago from a commercial software vendor, indicating that they had an effort (!) underway to update Xeffort and make it available for X64 (currently there is no 64-bit build.) I have not been in further contact with them so I don't know exactly what their plans are, nor how far they have proceeded.

0 Kudos
Steve_Lionel
Honored Contributor III
1,698 Views

Ok, replace just the attached file and do a rebuild of Xeffort.

0 Kudos
Neels
New Contributor II
1,698 Views

Thanks Steve, that compiles just fine, but unfortunately it still has the same issue. Attached two pictures showing using the original version which displays the text and buttons in the message box and using the newly compiled version which does not.

 

 

0 Kudos
Steve_Lionel
Honored Contributor III
1,698 Views

I never claimed the source I supplied would solve your dialog issue, only that it allows Xeffort to build using a current compiler. Since you can now build it, you should be able to debug your application and follow what happens when you try to display that dialog.

Where does the text for the message box come from? Is it a resource string or coded into your application? I ask because one of the routines I changed dealt directly with loading a resource string.  If you can provide a test case I can take a look, but you have all the resources I would have.

0 Kudos
Neels
New Contributor II
1,698 Views

Steve, I do not know where to even begin looking. Attached a short reproducer. Compiled with the old version it displays the text and not with the new one.

0 Kudos
Steve_Lionel
Honored Contributor III
1,698 Views

Ok, I've started looking at this but it's complicated, and I have other things going on. I can't make any promises.

0 Kudos
Neels
New Contributor II
1,698 Views

Steve, If it was easy I would have done it. Any help is appreciated. I also understand about a shortage of time.

Thanks

Neels

0 Kudos
Neels
New Contributor II
1,698 Views

I do not know enough but the following is first the Xeffort interface and then the user32.f90 interface to the same DialogBoxIndirectParamA:

!Xeffort
INTERFACE
      INTEGER FUNCTION DialogBoxIndirectParam(hInstance, hDialogTemplate, hWndParent, &
            lpDialogFunc, dwInitParam)
      !DEC$ ATTRIBUTES STDCALL, ALIAS: '_DialogBoxIndirectParamA@20' :: DialogBoxIndirectParam
      integer hInstance
      integer hDialogTemplate
      integer hWndParent
      integer lpDialogFunc
      integer dwInitParam
      END FUNCTION
END INTERFACE

!!user32
INTERFACE 
  FUNCTION DialogBoxIndirectParam( &
           hInstance,       &
           hDialogTemplate, &
           hWndParent,      &
           lpDialogFunc,    &
           dwInitParam)
    use ifwinty
    integer(INT_PTR) :: DialogBoxIndirectParam ! INT_PTR
    !DEC$ ATTRIBUTES DEFAULT, STDCALL, DECORATE, ALIAS:'DialogBoxIndirectParamA' :: DialogBoxIndirectParam
    integer(HANDLE) hInstance                  ! HINSTANCE hInstance
    !DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: hDialogTemplate
    TYPE(T_DLGTEMPLATE)  hDialogTemplate       ! LPCDLGTEMPLATEA hDialogTemplate
    integer(HANDLE) hWndParent                 ! HWND hWndParent
    integer(LPVOID) lpDialogFunc               ! DLGPROC lpDialogFunc
    integer(LONG_PTR) dwInitParam              ! LPARAM dwInitParam
  END FUNCTION
END INTERFACE

Is this maybe part of the issue?

0 Kudos
Steve_Lionel
Honored Contributor III
1,698 Views

I was looking at that, but so far don't see a problem given the way the call is coded. (A reminder to those following along, Xeffort is currently 32-bit only.) It's the dwInitParam argument that could be questionable, but this is just an arbitrary value passed and I think it's ok. The part I am looking at is where it renders the passed in text in a font that it has loaded. Something is not working right there, but I don't yet know what.

0 Kudos
Neels
New Contributor II
1,698 Views

You do not think Jugoslav has maybe used a scale factor that now makes it very very small or shifts it off the display area or something to that effect?

0 Kudos
Steve_Lionel
Honored Contributor III
1,698 Views

No. What I suspect is that there's a subtle error in Jugoslav's code that leads to something uninitialized. But I need to step through the code carefully. I might have to try building Xeffort with the 11.1 compiler to see what it does, but I'd rather not have to go that far.

0 Kudos
Neels
New Contributor II
1,698 Views

Steve, I have an old laptop with 11.1 compiler and Visual Studio 2005 on it. (And Windows Vista :( ) If you want to instrument some Xeffort files with write statements etc I can compile and run them and send you the results.

0 Kudos
Steve_Lionel
Honored Contributor III
1,697 Views

If you can do a debug build of Xeffort with 11.1 (note that it puts the build in a different location), zip it and attach it here, that would help.

0 Kudos
Neels
New Contributor II
1,698 Views

Is this what you require? Built in debug mode.

 

0 Kudos
Steve_Lionel
Honored Contributor III
1,742 Views

This will work. Thanks. I'll let you know what I find.

0 Kudos
Reply