IDL for Windows NT [message #3679] |
Mon, 06 March 1995 11:25  |
rcampbell
Messages: 2 Registered: March 1995
|
Junior Member |
|
|
If anyone is planning on porting their IDL code from VMX or UNIX to
Windows NT be aware that IDL for Windows NT does not support long filenames
even though the operating system does support them. You will have to change
all the .PRO files and all references to them to conform to the 8.3
convention. I have also heard that version 4 of IDL for NT will have the
same limitation.
rcampbell@ssl.msfc.nasa.gov
|
|
|
Re: IDL for Windows NT [message #3771 is a reply to message #3679] |
Fri, 10 March 1995 23:05   |
ade
Messages: 1 Registered: March 1995
|
Junior Member |
|
|
This is my solution for the long filename data.
This simple DLL returns truncated uniq short filename
which IDL could use to read/write it.
I compiled this with BorlandC++ Ver4.5. I'm new for Windows NT programing
and IDL for NT doesn't have DLL example for NT, so I don't know whether
if this is correct esp. LibMain. I'm using this every day and seems fine.
Let me know if something wrong.
If someone needs DLL binary which is about 13Kbytes, send me a E-mail to
KYD00035@niftyserve.or.jp.
Hisa Noguchi
///// Top of sfname.pro ////////
function sfname, LongFileName
return, call_external('e:\dll\sfname\sfname.dll', 'sfname', LongFileName, /S_VALUE)
end
///// End of sfname.pro ////////
///// Top of sfname.c ////////
#include <windows.h>
#include <stdio.h>
#include <string.h>
static HINSTANCE hLibInst;
int FAR PASCAL LibMain (HANDLE hInstance, WORD wDataSeg, WORD wHeapSize,
LPSTR lpszCmdLine)
{
hLibInst = hInstance;
return 1;
}
long PASCAL sfname(long lArgc, LPVOID lpvArgv)
{
long *lplArgv;
LPCTSTR longname;
HANDLE hReturn;
char *lpstrReturn;
WIN32_FIND_DATA lpffd;
HANDLE hRetFind;
lplArgv = (long *)lpvArgv;
longname = (LPCTSTR)lplArgv[0];
hReturn = LocalAlloc(LPTR, 20);
if (!hReturn)
return (NULL);
lpstrReturn = (char *)LocalLock(hReturn);
if (!lpstrReturn) {
LocalFree (hReturn);
return (NULL);
}
hRetFind = FindFirstFile(longname, &lpffd);
FindClose(hRetFind);
lstrcpy (lpstrReturn, lpffd.cAlternateFileName);
/* Return a char * */
return ((LONG)lpstrReturn);
}
///// End of sfname.c ////////
|
|
|
Re: IDL for Windows [message #7560 is a reply to message #3679] |
Sun, 08 December 1996 00:00  |
Mark Hadfield
Messages: 783 Registered: May 1995
|
Senior Member |
|
|
David R. Klassen <drk@uwyo.edu> wrote in article
<32A741AC.2EDC@uwyo.edu>...
> I was wondering if anyone has experienced any strangeness using IDL
> for Windows along the lines of long filenames.
Yep. IDL for Windows doesn't officially support long filenames. Appalling
but true.
> [Re .PRO files]
Bill Thompson wrote a CONCAT4DOS routine that concatenates & renames .PRO
files to fit in the 8.3 limitation. I have a modified version that runs
under WinNT (& probably Win95). Contact me if you want a copy.
> Also I've noticed that I cannot OPENW a file that doesn't have an
> 8.3 form. The only way to do it is to assign the filename I want to
> use to a string variable and then OPENW using the variable as the
> file name parameter. Although this is not a critical flaw, it *is*
> annoying.
I didn't know about that workaround. I have found adding a space to the end
of file names does the trick.
> Does anyone know of any patches/updates to 4.0.1 for WinNT/Win95 that
> will give IDL the full long filename capability?
One hopes it will be fixed in version 5.
|
|
|