<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 12 (filtered medium)"><!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:PMingLiU;
        panose-1:2 2 3 0 0 0 0 0 0 0;}
@font-face
        {font-family:PMingLiU;
        panose-1:2 2 3 0 0 0 0 0 0 0;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
@font-face
        {font-family:Verdana;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:"\@PMingLiU";
        panose-1:2 2 3 0 0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";
        color:black;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p
        {mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";
        color:black;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";
        color:black;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
        {mso-style-priority:99;
        mso-style-link:"Balloon Text Char";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:8.0pt;
        font-family:"Tahoma","sans-serif";
        color:black;}
span.BalloonTextChar
        {mso-style-name:"Balloon Text Char";
        mso-style-priority:99;
        mso-style-link:"Balloon Text";
        font-family:"Tahoma","sans-serif";}
span.EmailStyle20
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.EmailStyle21
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.EmailStyle22
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.EmailStyle23
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.EmailStyle24
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.EmailStyle25
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:Consolas;
        color:black;}
span.EmailStyle28
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body bgcolor=white lang=EN-NZ link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'>Yes, and I store the filenames in strings, or at least several tstringlists which will be UTF-16 and take twice the RAM. I would have to convert to/from UTF8 when reading/writing the data in RAM which wouldn’t be too difficult.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'>Cheers.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'><o:p> </o:p></span></p><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif";color:windowtext'>From:</span></b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif";color:windowtext'> delphi-bounces@listserver.123.net.nz [mailto:delphi-bounces@listserver.123.net.nz] <b>On Behalf Of </b>Todd Martin<br><b>Sent:</b> Wednesday, 3 October 2012 7:16 p.m.<br><b>To:</b> NZ Borland Developers Group - Delphi List<br><b>Subject:</b> Re: [DUG] Unicode help in D7<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Hi Ross<br><br>XE2 doesn't force you to store data in UTF-16 format. It is simply the encoding used internally by Delphi > 2009 for strings.<br><br>Todd.<br><br><o:p></o:p></p><p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'>I know what your saying, but it won’t be a biggie if I upgrade one day.</span><o:p></o:p></p><p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'> </span><o:p></o:p></p><p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'>I store filenames in text files on the hard drive and also in RAM, and some customers have 500,000+ files. Doubling the RAM and hard drive space requirements doesn’t appeal when most of my customers are in western countries. That is my main reason to use UTF-8 over UTF-16.</span><o:p></o:p></p><p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'> </span><o:p></o:p></p><p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'>Ross.</span><o:p></o:p></p><p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'> </span><o:p></o:p></p><div><div style='border:none;border-top:solid windowtext 1.0pt;padding:3.0pt 0cm 0cm 0cm;border-color:-moz-use-text-color -moz-use-text-color'><p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> <a href="mailto:delphi-bounces@listserver.123.net.nz">delphi-bounces@listserver.123.net.nz</a> [<a href="mailto:delphi-bounces@listserver.123.net.nz">mailto:delphi-bounces@listserver.123.net.nz</a>] <b>On Behalf Of </b>John Bird<br><b>Sent:</b> Wednesday, 3 October 2012 12:03 p.m.<br><b>To:</b> <a href="mailto:muellers@orcl-toolbox.com">muellers@orcl-toolbox.com</a>; NZ Borland Developers Group - Delphi List<br><b>Subject:</b> Re: [DUG] Unicode help in D7</span><o:p></o:p></p></div></div><p class=MsoNormal> <o:p></o:p></p><div><div><div><p class=MsoNormal><span lang=EN-US style='font-size:12.0pt;font-family:"Verdana","sans-serif";color:navy'>I would second upgrading to XE2/XE3 as almost all of the Unicode housekeeping is done automatically in later versions of Delphi – and if you start coding for AnsiChar/WideChar etc then you will have considerable code to unwind when you do convert as the workarounds are not needed</span><o:p></o:p></p></div><div><p class=MsoNormal><span lang=EN-US style='font-size:12.0pt;font-family:"Verdana","sans-serif";color:navy'> </span><o:p></o:p></p></div><div><p class=MsoNormal><span lang=EN-US style='font-size:12.0pt;font-family:"Verdana","sans-serif";color:navy'>John Bird</span><o:p></o:p></p><div><div><div><p class=MsoNormal style='background:whitesmoke;background-attachment:scroll;background-position-x:0%;background-position-y:0%'><b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif";color:navy'>From:</span></b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif";color:navy'> <a href="mailto:muellers@orcl-toolbox.com" title="muellers@orcl-toolbox.com">Stefan Mueller</a> </span><o:p></o:p></p></div><div><p class=MsoNormal style='background:whitesmoke;background-attachment:scroll;background-position-x:0%;background-position-y:0%'><b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif";color:navy'>Sent:</span></b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif";color:navy'> Tuesday, October 02, 2012 11:57 PM</span><o:p></o:p></p></div><div><p class=MsoNormal style='background:whitesmoke;background-attachment:scroll;background-position-x:0%;background-position-y:0%'><b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif";color:navy'>To:</span></b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif";color:navy'> <a href="mailto:delphi@listserver.123.net.nz" title="delphi@listserver.123.net.nz">'NZ Borland Developers Group - Delphi List'</a> </span><o:p></o:p></p></div><div><p class=MsoNormal style='background:whitesmoke;background-attachment:scroll;background-position-x:0%;background-position-y:0%'><b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif";color:navy'>Subject:</span></b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif";color:navy'> Re: [DUG] Unicode help in D7</span><o:p></o:p></p></div></div></div><div><p class=MsoNormal><span lang=EN-US style='font-size:12.0pt;font-family:"Verdana","sans-serif";color:navy'> </span><o:p></o:p></p></div></div><div><p class=MsoNormal><span lang=EN-US>The problem with storing Unicode in utf8 is that the caller always needs to know whether a string contains ansi or utf8 and that can get messy/buggy real quick if you have a big project</span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US> </span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US>I am sure you have thought about it and you have your own reason. But as far as I am concerned, if you go down that road to slowly Unicode enable your application (including later on maybe Form captions, labels, edits, listboxes, etc) then using widestring and something like TNT library on delphi7 is the easiest way (or upgrade to >delphi2009)</span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US> </span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:"Arial","sans-serif";color:navy'><br></span><span lang=EN-US style='font-size:10.0pt;font-family:"Arial","sans-serif"'>Kind Regards,<br>Stefan Mueller</span><span lang=EN-US style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#585757'> <br></span><span lang=EN-US style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#666699'>_______________________<br>R&D Manager<br>ORCL Toolbox LLP, Japan<br></span><span lang=EN-US style='color:#1F497D'><a href="http://www.orcl-toolbox.com/" title="blocked::http://www.orcl-toolbox.com/"><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>http://www.orcl-toolbox.com</span></a></span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US> </span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US> </span><o:p></o:p></p><div><div style='border:none;border-top:solid windowtext 1.0pt;padding:3.0pt 0cm 0cm 0cm;border-color:-moz-use-text-color -moz-use-text-color'><p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> <a href="mailto:delphi-bounces@listserver.123.net.nz">delphi-bounces@listserver.123.net.nz</a> [<a href="mailto:delphi-bounces@listserver.123.net.nz">mailto:delphi-bounces@listserver.123.net.nz</a>] <b>On Behalf Of </b>Ross Levis<br><b>Sent:</b> Tuesday, October 02, 2012 7:25 PM<br><b>To:</b> 'NZ Borland Developers Group - Delphi List'<br><b>Subject:</b> Re: [DUG] Unicode help in D7</span><o:p></o:p></p></div></div><p class=MsoNormal><span lang=EN-US> </span><o:p></o:p></p><p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'>I’ve hit a snag.</span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US> </span><o:p></o:p></p><p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'>D7 defines IShellLinkW like this.</span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US> </span><o:p></o:p></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'> IShellLinkW = interface(IUnknown) { sl }</span><o:p></o:p></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'> [SID_IShellLinkW]</span><o:p></o:p></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'> function GetPath(pszFile: PWideChar; cchMaxPath: Integer;</span><o:p></o:p></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'> var pfd: TWin32FindData; fFlags: DWORD): HResult; stdcall;</span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US> </span><o:p></o:p></p><p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'>I think the TWin32FindData should be TWin32FindDataW. I take it this is a bug, and I’ll define my own one.</span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US> </span><o:p></o:p></p><p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'>Ross.</span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US> </span><o:p></o:p></p><div><div style='border:none;border-top:solid windowtext 1.0pt;padding:3.0pt 0cm 0cm 0cm;border-color:-moz-use-text-color -moz-use-text-color'><p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> <a href="mailto:delphi-bounces@listserver.123.net.nz">delphi-bounces@listserver.123.net.nz</a> <a href="mailto:[mailto:delphi-bounces@listserver.123.net.nz]">[mailto:delphi-bounces@listserver.123.net.nz]</a> <b>On Behalf Of </b>Ross Levis<br><b>Sent:</b> Tuesday, 2 October 2012 10:58 p.m.<br><b>To:</b> 'NZ Borland Developers Group - Delphi List'<br><b>Subject:</b> Re: [DUG] Unicode help in D7</span><o:p></o:p></p></div></div><p class=MsoNormal><span lang=EN-US> </span><o:p></o:p></p><p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'>Thanks for that. I did download some free 3<sup>rd</sup> party components and pas files I found which include a TOpenDialogW, WideFindFirst, WideFileExists, etc. They should be all I need.</span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US> </span><o:p></o:p></p><p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'>I’ll actually be storing everything in UTF8 and converting backwards and forwards to full unicode as required for the Windows API. That way I can keep most of my code using the default AnsiString, standard TStringLists, etc.</span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US> </span><o:p></o:p></p><p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'>For me it would be useful if someone had created a set of UTF8 components. I find it so much easier to work with. I’ve created a UTF8FileExists function, for example. I suppose later Delphi versions to the conversions automatically.</span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US> </span><o:p></o:p></p><p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'>Cheers,</span><o:p></o:p></p><p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'>Ross.</span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US> </span><o:p></o:p></p><div><div style='border:none;border-top:solid windowtext 1.0pt;padding:3.0pt 0cm 0cm 0cm;border-color:-moz-use-text-color -moz-use-text-color'><p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> <a href="mailto:delphi-bounces@listserver.123.net.nz">delphi-bounces@listserver.123.net.nz</a> [<a href="mailto:delphi-bounces@listserver.123.net.nz">mailto:delphi-bounces@listserver.123.net.nz</a>] <b>On Behalf Of </b>Stefan Mueller<br><b>Sent:</b> Tuesday, 2 October 2012 9:22 p.m.<br><b>To:</b> 'NZ Borland Developers Group - Delphi List'<br><b>Subject:</b> Re: [DUG] Unicode help in D7</span><o:p></o:p></p></div></div><p class=MsoNormal><span lang=EN-US> </span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US>The buffer has to be </span><span style='color:#1F497D'>WideChar if you use the IShellLinkW interface.</span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US> </span><o:p></o:p></p><p class=MsoNormal>I also had my software unicodified with delphi7. I used the TNT components (last free version is here: <span lang=EN-US><a href="http://www.axolot.com/TNT/">http://www.axolot.com/TNT/</a> - it got bought out by TMS software: <a href="http://www.tmssoftware.com/site/tmsuni.asp">http://www.tmssoftware.com/site/tmsuni.asp</a> ) and that made things very easy.</span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US> </span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US>The TNT component pack adds Unicode enabled VCL-controls as well as Unicode Windows-API support for many functions(FileOpen,FileCreate,etc) and classes(WideStringList, etc). The library makes it easy to be dealing with Unicode. </span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US> </span><o:p></o:p></p><div><p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:"Arial","sans-serif";color:navy'><br></span><span lang=EN-US style='font-size:10.0pt;font-family:"Arial","sans-serif"'>Kind Regards,<br>Stefan Mueller</span><span lang=EN-US style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#585757'> <br></span><span lang=EN-US style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#666699'>_______________________<br>R&D Manager<br>ORCL Toolbox LLP, Japan<br></span><span lang=EN-US style='color:#1F497D'><a href="http://www.orcl-toolbox.com/" title="blocked::http://www.orcl-toolbox.com/"><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>http://www.orcl-toolbox.com</span></a></span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US> </span><o:p></o:p></p></div><p class=MsoNormal><span lang=EN-US> </span><o:p></o:p></p><div><div style='border:none;border-top:solid windowtext 1.0pt;padding:3.0pt 0cm 0cm 0cm;border-color:-moz-use-text-color -moz-use-text-color'><p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> <a href="mailto:delphi-bounces@listserver.123.net.nz">delphi-bounces@listserver.123.net.nz</a> [<a href="mailto:delphi-bounces@listserver.123.net.nz">mailto:delphi-bounces@listserver.123.net.nz</a>] <b>On Behalf Of </b>Ross Levis<br><b>Sent:</b> Tuesday, October 02, 2012 5:00 PM<br><b>To:</b> 'NZ Borland Developers Group - Delphi List'<br><b>Subject:</b> [DUG] Unicode help in D7</span><o:p></o:p></p></div></div><p class=MsoNormal><span lang=EN-US> </span><o:p></o:p></p><p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'>I’m adding a small amount of Unicode support in my D7 app to enable opening files where the filenames are in foreign languages. Currently my app can’t even open these files. I’ve installed an OpenFile dialog which provides WideString results.</span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US> </span><o:p></o:p></p><p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'>One thing I need is to resolve shortcuts. I have converted the following function which I had for ANSI filenames into Unicode. Just IShellLinkW and TWin32FindDataW changed.</span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US> </span><o:p></o:p></p><p class=MsoNormal><b><span style='font-size:9.0pt;font-family:"Arial","sans-serif"'>function ResolveShortcut(const LinkPath: WideString): WideString;</span></b><o:p></o:p></p><p class=MsoNormal><b><span style='font-size:9.0pt;font-family:"Arial","sans-serif"'>var</span></b><o:p></o:p></p><p class=MsoNormal><b><span style='font-size:9.0pt;font-family:"Arial","sans-serif"'>ShellLink: IShellLinkW</span></b><o:p></o:p></p><p class=MsoNormal><b><span style='font-size:9.0pt;font-family:"Arial","sans-serif"'> FindData: TWin32FindDataW;</span></b><o:p></o:p></p><p class=MsoNormal><b><span style='font-size:9.0pt;font-family:"Arial","sans-serif"'> buff: Array [0..Max_Path-1] of Char;</span></b><o:p></o:p></p><p class=MsoNormal><b><span style='font-size:9.0pt;font-family:"Arial","sans-serif"'>begin</span></b><o:p></o:p></p><p class=MsoNormal><b><span style='font-size:9.0pt;font-family:"Arial","sans-serif"'> ShellLink := CreateComObject(CLSID_ShellLink) as IShellLinkW;</span></b><o:p></o:p></p><p class=MsoNormal><b><span style='font-size:9.0pt;font-family:"Arial","sans-serif"'>PersistFile := ShellLink as IPersistFile;</span></b><o:p></o:p></p><p class=MsoNormal><b><span style='font-size:9.0pt;font-family:"Arial","sans-serif"'> if (PersistFile.Load(PWideChar(LinkPath),STGM_READ) = S_OK) and</span></b><o:p></o:p></p><p class=MsoNormal><b><span style='font-size:9.0pt;font-family:"Arial","sans-serif"'> (ShellLink.Resolve(Application.Handle, SLR_NO_UI) = NOERROR) and</span></b><o:p></o:p></p><p class=MsoNormal><b><span style='font-size:9.0pt;font-family:"Arial","sans-serif"'> (ShellLink.GetPath(buff,MAX_PATH,FindData,SLGP_UNCPRIORITY)= NOERROR) then</span></b><o:p></o:p></p><p class=MsoNormal><b><span style='font-size:9.0pt;font-family:"Arial","sans-serif"'> Result := buff</span></b><o:p></o:p></p><p class=MsoNormal><b><span style='font-size:9.0pt;font-family:"Arial","sans-serif"'> else Result := ''</span></b><o:p></o:p></p><p class=MsoNormal><b><span style='font-size:9.0pt;font-family:"Arial","sans-serif"'>end;</span></b><o:p></o:p></p><p class=MsoNormal><span lang=EN-US> </span><o:p></o:p></p><p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'>But I’m not sure if the buff array should be of WideChar or left as Char.</span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US> </span><o:p></o:p></p><p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'>Does MAX_PATH assume wide characters?</span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US> </span><o:p></o:p></p><p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'>Thanks,</span><o:p></o:p></p><p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'>Ross.</span><o:p></o:p></p><div class=MsoNormal align=center style='text-align:center'><span lang=EN-US style='font-size:12.0pt'><hr size=3 width="100%" align=center></span></div><p class=MsoNormal><span lang=EN-US style='font-size:12.0pt'>_______________________________________________<br>NZ Borland Developers Group - Delphi mailing list<br>Post: <a href="mailto:delphi@listserver.123.net.nz">delphi@listserver.123.net.nz</a><br>Admin: <a href="http://delphi.org.nz/mailman/listinfo/delphi">http://delphi.org.nz/mailman/listinfo/delphi</a><br>Unsubscribe: send an email to <a href="mailto:delphi-request@listserver.123.net.nz">delphi-request@listserver.123.net.nz</a> with Subject: unsubscribe</span><o:p></o:p></p></div></div></div><pre><o:p> </o:p></pre><pre><o:p> </o:p></pre><pre>_______________________________________________<o:p></o:p></pre><pre>NZ Borland Developers Group - Delphi mailing list<o:p></o:p></pre><pre>Post: <a href="mailto:delphi@listserver.123.net.nz">delphi@listserver.123.net.nz</a><o:p></o:p></pre><pre>Admin: <a href="http://delphi.org.nz/mailman/listinfo/delphi">http://delphi.org.nz/mailman/listinfo/delphi</a><o:p></o:p></pre><pre>Unsubscribe: send an email to <a href="mailto:delphi-request@listserver.123.net.nz">delphi-request@listserver.123.net.nz</a> with Subject: unsubscribe<o:p></o:p></pre><p class=MsoNormal style='margin-bottom:12.0pt'><span style='font-size:12.0pt;font-family:"Times New Roman","serif"'><o:p> </o:p></span></p><div><p class=MsoNormal><span style='font-size:12.0pt;font-family:"Times New Roman","serif"'>-- <br><i>Fortune</i> favours the <b>brave</b><o:p></o:p></span></p></div></div></body></html>