Thanks for that. I did download some free 3rd party components and pas files I found which include a TOpenDialogW, WideFindFirst, WideFileExists, etc. They should be all I need.
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. 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. Cheers, Ross. From: [email protected] [mailto:[email protected]] On Behalf Of Stefan Mueller Sent: Tuesday, 2 October 2012 9:22 p.m. To: 'NZ Borland Developers Group - Delphi List' Subject: Re: [DUG] Unicode help in D7 The buffer has to be WideChar if you use the IShellLinkW interface. I also had my software unicodified with delphi7. I used the TNT components (last free version is here: http://www.axolot.com/TNT/ - it got bought out by TMS software: http://www.tmssoftware.com/site/tmsuni.asp ) and that made things very easy. 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. Kind Regards, Stefan Mueller _______________________ R&D Manager ORCL Toolbox LLP, Japan <http://www.orcl-toolbox.com/> http://www.orcl-toolbox.com From: [email protected] [mailto:[email protected]] On Behalf Of Ross Levis Sent: Tuesday, October 02, 2012 5:00 PM To: 'NZ Borland Developers Group - Delphi List' Subject: [DUG] Unicode help in D7 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. 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. function ResolveShortcut(const LinkPath: WideString): WideString; var ShellLink: IShellLinkW FindData: TWin32FindDataW; buff: Array [0..Max_Path-1] of Char; begin ShellLink := CreateComObject(CLSID_ShellLink) as IShellLinkW; PersistFile := ShellLink as IPersistFile; if (PersistFile.Load(PWideChar(LinkPath),STGM_READ) = S_OK) and (ShellLink.Resolve(Application.Handle, SLR_NO_UI) = NOERROR) and (ShellLink.GetPath(buff,MAX_PATH,FindData,SLGP_UNCPRIORITY)= NOERROR) then Result := buff else Result := '' end; But I'm not sure if the buff array should be of WideChar or left as Char. Does MAX_PATH assume wide characters? Thanks, Ross.
_______________________________________________ NZ Borland Developers Group - Delphi mailing list Post: [email protected] Admin: http://delphi.org.nz/mailman/listinfo/delphi Unsubscribe: send an email to [email protected] with Subject: unsubscribe
