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

openfile from cvf->IVF

Lu_Zhang
Beginner
834 Views
I am using the following code foropen file dialog. it works in CVF , but get some error for GETOPENFILENAME. How can I make this work in IVF?

Thanks so much,

Lu


!codes written in CVF
USE DATA_SET
USE DFLIB
USE DFWINTY
USE DFWIN
IMPLICIT NONE

TYPE (T_OPENFILENAME)FRED

LOGICAL(KIND=4)RET
INTEGER(KIND=4)ilen1,ilen,ierror
! character(8) dataset
CHARACTER(LEN=60)DLGTITLE
CHARACTER(LEN=256):: file_spec=" "C

!CHARACTER*(*), PARAMETER::FILTER = &
!"Data Files(*.data)"C//"*.data" C// &
!"All Files(*.*)"C//"*.*" C//" "C
CHARACTER*(*), PARAMETER::FILTER = &
'Data Files(*.data)' //char(0)//'*.data' //char(0)// &
'All Files(*.*)' //char(0)//'*.*' //char(0)//char(0)

LOGICAL(KIND=4)CHECKED

DLGTITLE = 'Input Program Data Files'C


FRED%LSTRUCTSIZE = (BIT_SIZE(FRED%LSTRUCTSIZE) + &
BIT_SIZE(FRED%HWNDOWNER) + &
BIT_SIZE(FRED%HINSTANCE) + &
BIT_SIZE(FRED%LPSTRFILTER) + &
BIT_SIZE(FRED%LPSTRCUSTOMFILTER) + &
BIT_SIZE(FRED%NMAXCUSTFILTER) + &
BIT_SIZE(FRED%NFILTERINDEX) + &
BIT_SIZE(FRED%LPSTRFILE) + &
BIT_SIZE(FRED%NMAXFILE) + &
BIT_SIZE(FRED%LPSTRFILETITLE) + &
BIT_SIZE(FRED%NMAXFILETITLE) + &
BIT_SIZE(FRED%LPSTRINITIALDIR) + &
BIT_SIZE(FRED%LPSTRTITLE) + &
BIT_SIZE(FRED%FLAGS) + &
BIT_SIZE(FRED%NFILEOFFSET) + &
BIT_SIZE(FRED%NFILEEXTENSION) + &
BIT_SIZE(FRED%LPSTRDEFEXT) + &
BIT_SIZE(FRED%LCUSTDATA) + &
BIT_SIZE(FRED%LPFNHOOK) + &
BIT_SIZE(FRED%LPTEMPLATENAME))/8

FRED%HWNDOWNER = NULL
FRED%HINSTANCE = NULL
FRED%LPSTRFILTER = LOC(FILTER)
FRED%LPSTRCUSTOMFILTER = NULL
FRED%NMAXCUSTFILTER = 0
FRED%NFILTERINDEX = 1
FRED%LPSTRFILE = LOC(file_spec)
FRED%NMAXFILE = LEN(file_spec)
FRED%LPSTRFILETITLE = NULL
FRED%NMAXFILETITLE = 0
FRED%LPSTRINITIALDIR = NULL
FRED%LPSTRTITLE = LOC(DLGTITLE)
FRED%FLAGS = NULL
FRED%NFILEOFFSET = NULL
FRED%NFILEEXTENSION = NULL
FRED%LPSTRDEFEXT = LOC("data"C)
FRED%LCUSTDATA = NULL
FRED%LPFNHOOK = NULL
FRED%LPTEMPLATENAME = NULL
RET = GETOPENFILENAME(FRED)
CALL COMDLGER(IERROR)
IF(.NOT.RET) THEN
PRINT *,' No new file name specified'
else
...

end if
RETURN
END
0 Kudos
1 Solution
Paul_Curtis
Valued Contributor I
834 Views
FRED%LSTRUCTSIZE = SIZEOF(FRED)

View solution in original post

0 Kudos
7 Replies
Lu_Zhang
Beginner
834 Views
The error message isinvalid lStructSize error
0 Kudos
Paul_Curtis
Valued Contributor I
835 Views
FRED%LSTRUCTSIZE = SIZEOF(FRED)
0 Kudos
anthonyrichards
New Contributor III
834 Views
How does your code fail in IVF?
What is the result of COMDLGERROR?

Try

...
CHARACTER(18)::FILTER(5)
! Make all FILTER strings the same length
FILTER(1)='Data Files(*.data)'C
FILTER(2)=' *.data' C
FILTER(3)='All Files (*.*)'C
FILTER(4)=' *.*'C
FILTER(5)=char(0)//char(0)
...
...
FRED%LPSTRFILTER= LOC(FILTER(1))
FRED%LSTRUCTSIZE= SIZEOF(FRED)
...




0 Kudos
Lu_Zhang
Beginner
834 Views
Dear Paul,

Thanks so much for you reply. I can not reach my computer until Wednesday. I will try this and keep you updted the results.

Lu
0 Kudos
Lu_Zhang
Beginner
834 Views
Dear
0 Kudos
Lu_Zhang
Beginner
834 Views

Dear Paul,

It works! Thanks so much!

Lu

0 Kudos
Lu_Zhang
Beginner
834 Views
Dear anthonyrichards,

Thanks again for your answer.This works and isvery helpful to me!

Lu
0 Kudos
Reply