The most I could pack in the str today is 133 chars
Can't say I've ever noticed that previously, but I get the same result as you (133 chars).
Would you happen to have any updated information on getflname()?
I've never run into any limitation on getflname, but not sure if I've ever used it. I am surprised at the limitation, but can confirm that I get an error message if the file name is longer than 80.
Over the years I have got reasonably good at getting around the Classic DCAL limitations. My solution to this problem would be something along the following lines:
- write a small Delphi program to get the file name and then write the name to a temp file
- call that program from the macro using ExecAndWait
- once ExecAndWait returns control to the macro read the file name from the temp file and then delete the temp file.
(I'm not aware of any limitation (other than 255) on the max len that f_rdstr can read, but if there is your Delphi app could split the name over multiple lines and the macro could do multiple f_rdstr and then concat them together)
... not a particularly elegant solution, and means that you need to distribute an exe file together with your macro, but it gets the job done! ... the other option would be to rewrite the whole macro using D4D.