В Блэкбоксе, как я понимаю, в параметр типа ARRAY OF BYTE нельзя передать произвольное значение. Другими словами Files.Writer.WriteBytes кушает только ARRAY OF BYTE и для записи строки SHORTCHARов длиной 64K (или двух мегабайтов CHARов, буде таковые появятся) мне предлагается воспользоваться циклом

Ситуация такова:
Имеется процедура
## Код:
```
PROCEDURE (m : Memo) WriteChars* (block : INTEGER; IN val : ARRAY OF SHORTCHAR), NEW;
BEGIN
  m.WriteUsedHeader(LEN(val$));
  (* а вот тут надо писать строку, желательно побыстрее и желательно за один присест *)
END WriteChars;
```


Пытался сделать так:
## Код:
```
PROCEDURE (m : Memo) WriteChars* (block : INTEGER; IN val : ARRAY OF SHORTCHAR), NEW;
TYPE bt : POINTER TO ARRAY OF BYTE;
VAR b : bt;
BEGIN
  m.WriteUsedHeader(LEN(val$));
  b := SYSTEM.VAL(bt, val [параметр не соответствует] );
  m.w.WriteBytes(b, 0, LEN(val$))
END WriteChars;
```


Вот такой вариант работает:
## Код:
```
PROCEDURE (m : Memo) WriteChars* (block : INTEGER; IN val : ARRAY OF SHORTCHAR), NEW;
TYPE bt : POINTER [untagged] TO ARRAY OF BYTE;
VAR b : bt; i : INTEGER;
BEGIN
  m.WriteUsedHeader(LEN(val$));
  i := SYSTEM.ADR(val[0]) - 16;
  b := SYSTEM.VAL(bt, val);
  m.w.WriteBytes(b, 0, LEN(val$))
END WriteChars;
```

Но он мне не нравится потенциальными граблями.

Может быть я чего-то не понимаю и проглядел простое решение?