On 16/9/2011 14:03, Luiz Americo Pereira Camara wrote:
On 16/9/2011 09:36, Marco van de Voort wrote:
In our previous episode, Luiz Americo Pereira Camara said:
Take the example of FileExists:

The current LCL implementation - the UTF8 ->  UTF16 conversion is done
with the need of auxiliary code:
All the routines you name (fileexists, filegetattr etc) will become
rawbytestring and accept both utf8 and utf16, and then only in the
implementation figure out if conversion is necessary. (to the encoding of
the OS)


Better.

I took a look at the Delphi An Unicode document by Marco Cantu and a get doubt about the implementation with RawByteString:

Assume the implementation under windows of FileGetAttr:

with UnicodeString (there's no need to conversion - all good):

function FileGetAttr(const FileName: UnicodeString): Longint;
begin
  Result:=Integer(Windows.GetFileAttributesW(PWideChar(FileName)));
end;

with RawByteString (need the conversion - but how ?????):

function FileGetAttr(const FileName: RawByteString): Longint;
begin
  // how to convert?
// UnicodeString(FileName) -> will not work because dont know if is was a UTF8 or UTF16 or whatever before passing as RawByteString parameter. SetCodePage will also not work.
  Result:=Integer(Windows.GetFileAttributesW(PWideChar(FileName)));
end;

Luiz
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to