array of byte и TByteDynArray

фыв
Дата: 06.12.2007 19:26:35
Вот интересно, почему Delphi не разрешает передавать в ф-ции с параметром TByteDynArray, переменную, объявленную как array of byte
Например

function Gsm7BitToStr(const msg7bit:TByteDynArray):String;
var nToConv,i,w:Integer;
    nbit,nbyte:integer;
begin
...
end;

procedure testProc;
var a:array of Byte;
    b:TByteDynArray;
begin
.....
  Gsm7BitToStr(a);// ошибка Incompatible Types
.....
  Gsm7BitToStr(b);// нет ошибки
.....
end;

Ведь TByteDynArray объявлен в Types как
type
  TByteDynArray = array of Byte;
RENaissance
Дата: 06.12.2007 19:31:27
фыв

Вот интересно, почему Delphi не разрешает передавать в ф-ции с параметром TByteDynArray, переменную, объявленную как array of byte

Ничего интересного. Этот момент в справке хорошо описан.

Posted via ActualForum NNTP Server 1.4

Anatoly Podgoretsky
Дата: 06.12.2007 19:40:33
var 
  a:array of Byte;
  b:array of Byte;
Это разные типы, а
var 
  a, b:array of Byte;
одинаковые.
Читать или учебник или справку.
фыв
Дата: 06.12.2007 19:43:23
В справке написано, что параметр порцедуры обявленный как array of byte - это open array parameter, а не параметр типа "динамический массив", а чтобы явно задать тип параметра как динамический массив, нужно использовать TByteDynArray (и ему подобные).

Я не понимаю почему я не могу в ф-цию принимающую параметр типа "динамический массив" передать переменную типа "динамический массив".
фыв
Дата: 06.12.2007 19:45:49
То есть получается тип данных array of byte несовместим с типом объявленным как
type
  TByteDynArray=array of byte;
?

бред какой-то
Dim2000
Дата: 06.12.2007 19:49:19

фыв wrote:

> То есть получается тип данных array of byte несовместим с типом
> объявленным как
> *type*
> TByteDynArray=*array* *of* byte;

Да, и это классика Паскаля, которую стыдно не знать.

Posted via ActualForum NNTP Server 1.4

Anatoly Podgoretsky
Дата: 06.12.2007 19:49:34
Бредишь ты, почитай учебник по Дельфи.