Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado
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
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 ////////
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.