<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic String Tables in Fortran in Software Archive</title>
    <link>https://community.intel.com/t5/Software-Archive/String-Tables-in-Fortran/m-p/977599#M25355</link>
    <description>How can I use StringTables in Visual Fortran 6.5, as I do in Visual C++ 6.0? &lt;BR /&gt;Thank you.</description>
    <pubDate>Tue, 18 Dec 2001 04:30:31 GMT</pubDate>
    <dc:creator>j_jimenez</dc:creator>
    <dc:date>2001-12-18T04:30:31Z</dc:date>
    <item>
      <title>String Tables in Fortran</title>
      <link>https://community.intel.com/t5/Software-Archive/String-Tables-in-Fortran/m-p/977599#M25355</link>
      <description>How can I use StringTables in Visual Fortran 6.5, as I do in Visual C++ 6.0? &lt;BR /&gt;Thank you.</description>
      <pubDate>Tue, 18 Dec 2001 04:30:31 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/String-Tables-in-Fortran/m-p/977599#M25355</guid>
      <dc:creator>j_jimenez</dc:creator>
      <dc:date>2001-12-18T04:30:31Z</dc:date>
    </item>
    <item>
      <title>Re: String Tables in Fortran</title>
      <link>https://community.intel.com/t5/Software-Archive/String-Tables-in-Fortran/m-p/977600#M25356</link>
      <description>It's easy -- just use LoadString. Most troubles, however, come from totally different treatment of string variables in two languages (null-terminated vs. fixed length). I use the following routines for manipulating strings from string tables. Actually, all language-dependent strings are stripped from the main application and placed in .dlls. Application loads appropriate dll at start (which contains also language-specific menus and dialogs) and everything is later loaded using LoadString: &lt;BR /&gt; &lt;BR /&gt;&lt;PRE&gt; 
MODULE LANGDEP 
 
USE DFWIN 
 
IMPLICIT NONE 
 
PUBLIC 
 
INCLUDE "lang.fd"                   !"Resource.fd" from dll's rc file 
 
INTEGER, PUBLIC::   hLangLib     !Handle of resource dll 
 
! PUBLIC OPERATOR (/)  !Concatenation -- Stripped for brevity 
! PUBLIC OPERATOR (//) !Concatenation -- Stripped for brevity 
 
PUBLIC OPERATOR (.S.) 
PUBLIC OPERATOR (.C.) 
PUBLIC ASSIGNMENT (=) 
 
PRIVATE StrAssign 
PRIVATE C2F 
 
INTERFACE OPERATOR (.S.) 
      MODULE PROCEDURE StrLoad 
END INTERFACE 
INTERFACE OPERATOR (.C.) 
      MODULE PROCEDURE CStrLoad 
END INTERFACE 
INTERFACE ASSIGNMENT (=) 
      MODULE PROCEDURE StrAssign 
END INTERFACE 
 
!==================================================== 
CONTAINS 
!==================================================== 
RECURSIVE CHARACTER(256) FUNCTION StrLoad(i) RESULT(sR) 
!Load a blank-terminated string 
 
INTEGER, INTENT(IN)::   i 
 
IF (LoadString(hLangLib, i, sR, LEN(sR)).GT.0) THEN 
   sR = C2F(sR) 
ELSE 
   sR = "" 
END IF 
 
END FUNCTION StrLoad 
!===================================================== 
RECURSIVE CHARACTER(256) FUNCTION CStrLoad(i) RESULT(sR) 
!Load a null-terminated string 
 
INTEGER, INTENT(IN)::   i 
 
IF (.NOT. (LoadString(hLangLib, i, sR, LEN(sR)).GT.0)) sR = CHAR(0) 
 
END FUNCTION CStrLoad 
!===================================================== 
SUBROUTINE StrAssign(s, i) 
!Operator (=) (returns Fortran string) 
 
INTEGER, INTENT(IN)::   i 
CHARACTER(*), INTENT(OUT)::   s 
 
IF (LoadString(hLangLib, i, s, LEN(s)).GT.0) THEN 
      s = C2F(s) 
ELSE 
      s="" 
END IF 
 
END SUBROUTINE StrAssign 
!===================================================== 
FUNCTION C2F(sStr) RESULT(sR) 
!C string to Fortran string conversion 
 
CHARACTER(*),INTENT(IN):: sStr 
CHARACTER(LEN=LEN(sStr)):: sR 
 
INTEGER::   nRes 
 
nRes=INDEX(sStr,CHAR(0)) 
IF (nRes.EQ.0) RETURN 
sR=sStr(1:nRes-1) 
 
END FUNCTION C2F 
!===================================================== 
           
END MODULE LANGDEP 
&lt;/PRE&gt; &lt;BR /&gt; &lt;BR /&gt;Few usage samples: &lt;BR /&gt;In WinMain.f90: &lt;CODE&gt;hLangLib = LoadLibrary("dmdEng.dll")&lt;/CODE&gt; &lt;BR /&gt;When loading strings:&lt;CODE&gt;USE LANGDEP...szString = IDS_TITLE&lt;/CODE&gt; &lt;BR /&gt;When working with dialogs: &lt;PRE&gt;USE DFLOGM 
USE LANGDEP 
iSt=DlgInit(IDD_MYDIALOG, hLangLib, Dlg) 
iSt=DlgSet(Dlg, IDC_EDIT1, .S.IDS_STRINGX) 
&lt;/PRE&gt; &lt;BR /&gt;etc... &lt;BR /&gt; &lt;BR /&gt;HTH&lt;BR /&gt; &lt;BR /&gt;Jugoslav</description>
      <pubDate>Tue, 18 Dec 2001 20:51:43 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/String-Tables-in-Fortran/m-p/977600#M25356</guid>
      <dc:creator>Jugoslav_Dujic</dc:creator>
      <dc:date>2001-12-18T20:51:43Z</dc:date>
    </item>
  </channel>
</rss>

