Results 1 to 10 of 16

Thread: UNICODESTRING vs ANSISTRING

Threaded View

Previous Post Previous Post   Next Post Next Post
  1. #8
    Sorry for the double post, but I have to say this: the solution was trivial

    While testing I discovered that function StrPas (used internally to force some callings to overloaded functions in my abstraction layer unit) were in a different unit in modern Delphi (AnsisString instead of SysUtils), so I added it to be used only in Delphi. Since then warnings appeared again and I was like WTF Delphi is trolling me... But using the Find declaration command to see the actual declaration of Format I discovered AnsiString also defines it's own version using ANSISTRING instead of UNICODESTRING!

    Note it doesn't avoid the need of the abstraction layer unit, but it simplifies a lot the implementation of this unit (and avoids to call an extra function internally in other units). For example:
    Code:
      USES
      {$IFDEF ISDELPHI2009ANDUP}
      { This unit implements sysutils using ANSISTRING instead of UNICODESTRING,
        which is the default in modern Delphi compilers. }
        AnsiStrings;
      {$ELSE}
        sysutils;
      {$ENDIF}
    
    ··· 
    
      FUNCTION al_str_format (CONST Fmt: AL_STR; CONST Args : ARRAY OF CONST)
        : AL_STR;
      BEGIN
        Format (Fmt, Args)
      END;
    This way there's no need of conditional compilation outside Allegro.pas.

    So, now we know.
    Last edited by Ñuño Martínez; 21-02-2020 at 11:58 AM.
    No signature provided yet.

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •