> -- Alexander Shiryaev писал(а):
> Замени "buffer: ANYPTR" на "buffer: POINTER [untagged] TO ARRAY [untagged] OF SHORTCHAR"Все массивы (ARRAY) и записи (RECORD) должны быть с [untagged]. Ну и POINTERs тоже.context*: ARRAY [untagged] 4 OF ANYPTR;  (* в оригинале    void*  context[4];  *)=>PtrVoid = POINTER [untagged] TO RECORD [untagged] END;context*: ARRAY [untagged] 4 OF PtrVoid;Сделай статический максимальной длины, да и всё.

Структуру определил так:
## Код:
```
VmbPixelFormat* = INTEGER;
   FrameStatus* = INTEGER;
   FrameFlags* = INTEGER;
   
   PtrVoid* = POINTER [untagged] TO RECORD [untagged] END;
   Buf* = POINTER [untagged] TO ARRAY [untagged] OF SHORTCHAR;
   
   Frame* = RECORD [untagged]
      buffer*:  Buf;
      bufferSize*: INTEGER;
      context*: ARRAY [untagged] 4 OF PtrVoid;
      receiveStatus*: FrameStatus;
      receiveFlags*: FrameFlags;
      imageSize*: INTEGER;
      ancillarySize*: INTEGER;
      pixelFormat*: VmbPixelFormat;
      width*: INTEGER;
      height*: INTEGER;
      offsetX*: INTEGER;
      offsetY*: INTEGER;
      frameID*: LONGINT;
      timestamp*: LONGINT;
   END;
   PtrFrame* = POINTER TO Frame;
```


Сделал статический массив с запасом и записываю ссылку на него по адресу буфера.
## Код:
```
VAR buf: ARRAY [untagged] 5000000 OF SHORTCHAR;
...
frame.buffer := SYSTEM.VAL(Vmb.Buf, SYSTEM.ADR(buf));
```

Теперь все работает и не падает