|
forums.silverfrost.com Welcome to the Silverfrost forums
|
View previous topic :: View next topic |
Author |
Message |
GEWV
Joined: 25 Nov 2013 Posts: 19
|
Posted: Wed Dec 18, 2013 10:01 am Post subject: Re: %im |
|
|
GEWV wrote: | The function winio$('%im[image_name]') doesn't work on Windows 8 |
The main:
Code: | programm win_LadeBMP
use mswin$
implicit none
integer win
win=winio$('%im[StartBild]')
end |
and the resource
Code: | StartBild IMAGE TN_Startbild2.bmp |
|
|
Back to top |
|
|
PaulLaidler Site Admin
Joined: 21 Feb 2005 Posts: 7933 Location: Salford, UK
|
Posted: Fri Dec 20, 2013 6:27 pm Post subject: |
|
|
I have fixed this bug but you can avoid it by using %bm and BITMAP for bitmaps. |
|
Back to top |
|
|
GEWV
Joined: 25 Nov 2013 Posts: 19
|
Posted: Tue Jan 21, 2014 8:17 am Post subject: |
|
|
For our application (we try from 32 to 64 bit) we also need the following functions
- ATTACH$
- SET_PIXEL$
- MKDIR$
Or is it possible to use other functions for it. |
|
Back to top |
|
|
PaulLaidler Site Admin
Joined: 21 Feb 2005 Posts: 7933 Location: Salford, UK
|
Posted: Tue Jan 21, 2014 10:26 am Post subject: |
|
|
SET_PIXEL$ is available as DRAW_POINT$.
I will make a note to add the other two. |
|
Back to top |
|
|
PaulLaidler Site Admin
Joined: 21 Feb 2005 Posts: 7933 Location: Salford, UK
|
|
Back to top |
|
|
GEWV
Joined: 25 Nov 2013 Posts: 19
|
Posted: Wed Jan 22, 2014 8:35 am Post subject: |
|
|
Many Thanks!!! |
|
Back to top |
|
|
DietmarSiepmann
Joined: 03 Jun 2013 Posts: 279
|
Posted: Wed Jan 29, 2014 11:55 am Post subject: Compiler version problems creating app using clearwin64.dll |
|
|
A Fortran test application making use of ClearWin64.dll has been successfully compiled using Intel's fortran build environment (64 bit), especially using ifort for compilation and xilink for linking.
We used the Intel Fortran Compiler ifort, version 11.1, for compilation.
The application (named test1.exe) creates a simple window using winio$ and generates some output logged into a file before and after the winio$ call. It works as expected when executed.
Now, we want to use a newer version of Intel's fortran build environment (64 bit), namely version 14.0.
We successfully created the test application from Fortran source file test1.for for Intel's build environment version 14.0, as well.
However, when starting test1.exe created with version 14.0, the following error occurred:
Unreasonable graphics dimensions - 1718157512 x 1718157512
Both applications make use of module files and object files (here for clrwin$) which have been created version specific, as well, for both compiler versions in question.
We checked that both apps call into the same dll ClearWin64.dll.
Is there any comment on that? Could I bypass the problem by means of an appropriate call using clearwin64.dll?
I would appreciate any advice.
Dietmar
Code: | PROGRAM TEST1
C USE MSWIN$
USE IFWIN
USE CLRWIN$
IMPLICIT NONE
INTEGER I
C
OPEN(42,FILE='test1.log')
WRITE(42,'(A)') 'Start test1.exe'
I = WINIO$('%gr[black,metafile_resize,rgb_colours]',200,200)
WRITE(42,'(A,I8)') 'i=',I
WRITE(42,'(A)') 'End test1.exe'
CLOSE(42)
C
END PROGRAM TEST1 |
|
|
Back to top |
|
|
IanLambley
Joined: 17 Dec 2006 Posts: 490 Location: Sunderland
|
Posted: Wed Jan 29, 2014 1:24 pm Post subject: |
|
|
Are the values of 200,200 in the right size. Try defining these as INTEGER*4 or INTEGER*8 i.e.
Code: |
PROGRAM TEST1
C USE MSWIN$
USE IFWIN
USE CLRWIN$
IMPLICIT NONE
INTEGER I
INTEGER*8 IW,IH
IW = 200
IH = 200
C
OPEN(42,FILE='test1.log')
WRITE(42,'(A)') 'Start test1.exe'
I = WINIO$('%gr[black,metafile_resize,rgb_colours]',IW,IH)
WRITE(42,'(A,I8)') 'i=',I
WRITE(42,'(A)') 'End test1.exe'
CLOSE(42)
C
END PROGRAM TEST1
|
|
|
Back to top |
|
|
PaulLaidler Site Admin
Joined: 21 Feb 2005 Posts: 7933 Location: Salford, UK
|
Posted: Wed Jan 29, 2014 5:17 pm Post subject: |
|
|
You may need to use %za and %zz in this context.
These are described in the ClearWin64 readme. |
|
Back to top |
|
|
DanRRight
Joined: 10 Mar 2008 Posts: 2826 Location: South Pole, Antarctica
|
Posted: Thu Jan 30, 2014 5:31 am Post subject: |
|
|
Dietmar,
When you declare inside your Intel Fortran program some array around 100MB, 200MB or even 1 GB are created EXE files have similar sizes up to 1 GB too? What are standard stack sizes for single array there? Can you allocate say few 20 GB arrays in 64bit Fortran with the RAM less then that amount? |
|
Back to top |
|
|
GEWV
Joined: 25 Nov 2013 Posts: 19
|
Posted: Thu Jan 30, 2014 11:33 am Post subject: using another gFortran |
|
|
If I use another gFortran so I rebuild the .mod-files.
This is o.K.
But then I want to build the .exe-file I get an error: clearwin64.dll file not recognizes: File format not recognized
If I want to build the .exe-file with the "Salford"-gfortran I get the following logical error (because the .mod-files were not compiled with the same gFortran): Wrong module version '10' (expected '8') for file 'mswin$.mod' opened at (1)
How can I solve this problem? |
|
Back to top |
|
|
DietmarSiepmann
Joined: 03 Jun 2013 Posts: 279
|
Posted: Thu Jan 30, 2014 12:22 pm Post subject: Compiler version problems creating app using clearwin64.dll |
|
|
Thanks to all who helped, especially to Ian: the values 200 in the winio$ call weren't in the right size. The integer size depends on the compiler options which I choose making 200 a 2 byte constant. If I substitute all occurrences of 200 with 200_8 or 200_4 (8 byte constant or 4 byte constant), then the winio$ call works successfully and as expected.
However, I am a little confused about the following: if I introduce variables IW and IH like Ian suggested then the winio$ call works for all types of integer for IW and IH (8, 4 and 2 byte constants).
And I am wondering why the behaviour changed when changing the versions of the intel compile environment.
Thanks,
Dietmar
Code: |
PROGRAM TEST1
C USE MSWIN$
USE IFWIN
USE CLRWIN$
IMPLICIT NONE
INTEGER I
INTEGER*8 IW8,IH8
INTEGER*4 IW4,IH4
INTEGER*4 IW2,IH2
IW8 = 200
IH8 = 200
IW4 = 200
IH4 = 200
IW2 = 200_2
IH2 = 200_2
C
OPEN(42,FILE='test1.log')
WRITE(42,'(A)') 'Start test1.exe'
I = WINIO$('%gr[black,metafile_resize,rgb_colours]',IW8,IH8) ! ok
I = WINIO$('%gr[black,metafile_resize,rgb_colours]',IW4,IH4) ! ok
I = WINIO$('%gr[black,metafile_resize,rgb_colours]',IW2,IH2) ! ok
I = WINIO$('%gr[black,metafile_resize,rgb_colours]',200_8,200_8) ! ok
I = WINIO$('%gr[black,metafile_resize,rgb_colours]',200_4,200_4) ! ok
I = WINIO$('%gr[black,metafile_resize,rgb_colours]',200_2,200_2) ! not ok for ifort version 14.1
WRITE(42,'(A,I8)') 'i=',I
WRITE(42,'(A)') 'End test1.exe'
CLOSE(42)
C
END PROGRAM TEST1 |
|
|
Back to top |
|
|
DietmarSiepmann
Joined: 03 Jun 2013 Posts: 279
|
Posted: Thu Jan 30, 2014 1:01 pm Post subject: Compiler version problems creating app using clearwin64.dll |
|
|
Sorry, in my last post the term in brackets should read (8, 4 and 2 byte types) instead of (8, 4 and 2 byte constants).
Regards,
Dietmar |
|
Back to top |
|
|
IanLambley
Joined: 17 Dec 2006 Posts: 490 Location: Sunderland
|
Posted: Thu Jan 30, 2014 1:19 pm Post subject: |
|
|
The FTN95 default is 4 byte integers. Two byte integers are really a waste of time in this day and age and should only be used if there is a specific reason for that size.
I would advise a default of 4 byte integers and 8 byte reals in everyday use.
Ian |
|
Back to top |
|
|
PaulLaidler Site Admin
Joined: 21 Feb 2005 Posts: 7933 Location: Salford, UK
|
Posted: Thu Jan 30, 2014 1:52 pm Post subject: |
|
|
Maybe you intended
INTEGER*2 IW2,IH2
In 64 bit Fortran, winio$ passes 64 bit integer addresses even for the constant values. What ClearWin+ receives depends on the positioning of the 32 bit integer with respect to the address that is passed. |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|