Пытаюсь понять внутреннее представление двухбайтовых строк во Free Pascal для использования в Компонентном Паскале внешней библиотеки (написанной на Free Pascal).

Допустим, есть такая библитека:
## Код:
```
Library libtest;

procedure Demo (var b: PWideChar; a: PWideChar); export;
begin
    //a := 'Hello'; // try to set initial value
    b := PWideChar(WideString(a) + '?!');
end;
    
    exports
        Demo;

begin
end.
```


Теперь пишу на КП модуль описания этой демо-библиотеки:
## Код:
```
MODULE TestLibDll ["libtest"];
   
   TYPE
      Pointer* = POINTER TO RECORD [untagged] END;
      WideString* = ARRAY [untagged] OF CHAR;
      PWideChar* = POINTER TO WideString;
   
   PROCEDURE Demo* (VAR b: PWideChar; a: PWideChar);
   
END TestLibDll.
```


И сам проверочный модуль:
## Код:
```
MODULE TestDll;

   IMPORT SYSTEM, Lib := TestLibDll, Log := StdLog;
   
   (* int - показывать ли строку также и в числовом виде *)
   PROCEDURE WriteLn(IN s: ARRAY OF CHAR; int: BOOLEAN);
      VAR i: INTEGER;
   BEGIN
      IF int THEN
         FOR i := 0 TO LEN(s$) DO Log.Int(ORD(s[i])) END;
         Log.Ln
      END;
      Log.String("=>" + s  +"<="); Log.Ln;
   END WriteLn;
   
   PROCEDURE StrCpy(OUT dest: Lib.PWideChar; IN src: ARRAY OF CHAR);
      VAR l: INTEGER;
   BEGIN
      WriteLn(" src ", FALSE);
      WriteLn(src, FALSE);
      
      dest := src;
      
      WriteLn(" dest ", FALSE);
      
      (*l := SYSTEM.ADR(dest); Log.Int(l); Log.Ln;*)
      WriteLn(dest$, TRUE);
      
      WriteLn(" end ", FALSE);
   END StrCpy;
   
   PROCEDURE Run*;
      VAR
         a, b: Lib.PWideChar;
         s: ARRAY 64 OF CHAR;
   BEGIN
      StrCpy(a, "++++1234");
      
      WriteLn("===== Demo", FALSE);
      WriteLn(a$, TRUE);
      
      b := NIL;
      Lib.Demo(b, a);
      
      WriteLn(b$, TRUE);
      WriteLn("------ Demo", FALSE);
   END Run;
   
END TestDll.
```

TestDll.Run

И получаю:
## Код:
```
=> src <=
=>++++1234<=
=> dest <=
 43 43 43 43 49 50 51 52 0
=>++++1234<=
=> end <=
=>===== Demo<=
 43 43 43 43 49 50 51 52 0
=>++++1234<=
 720 63 33 0
=>ː?!<=
=>------ Demo<=
```

Не пойму что я не учёл. Может, неправильно понял структуру PWideChar...