![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Массив как параметр функции [D7, WinXP]
Cardinal © (2004-12-30 13:27:00)Господа, есть к вам один ламерский вопрос. В случае, когда параметром моей функции является массив, у меня возникают некоторые проблемы. Мне требуется написать функцию, которая будет принимать массив (a: array [1..32] of byte), а возвращать строку, состоящую из символов, ANSII коды которых соответствуют значениям элементов массива.
function ByteArrayToStr(a: array [1..32] of byte): string;
Не компилируется: "OF expected but '[' found". Получается статические массивы нельзя использовать в параметрах функций и процедур? Пишу
function ByteArrayToStr(a: array of byte): string;
Компилится. Если в теле процедуры использовать функцию Copy, то
получаю "Incompatible types". Если в той же функции объявить переменную b: array of byte, то copy отлично работает...
Помогайте, пожалуйста!
Sandman25 (2004-12-30 14:37:00) [1][1] Anton_K © (30.12.04 13:31)
Не забываем добавлять const перед неизменяемыми параметрами.
Digitman (2004-12-30 13:43:00) [2]
> требуется написать функцию, которая будет принимать массив
> (a: array [1..32] of byte), а возвращать строку, состоящую
> из символов, ANSII коды которых соответствуют значениям
> элементов массива
а есть ли вообще смысл писать такую ф-цию ?
1. предположим, символы в массиве предст-т собой символы нуль-терминированной строки
тогда
var
m: array [1..32] of byte;
s: String;
..
s := StrPas(@m)
2. предположим, символы в массиве НЕ предст-т собой символы нуль-терминированной строки, т.е. печатаемыми символами строки по дифолту считаются все байты массива
тогда
var
m: array [1..32] of byte;
s: String;
..
SetLength(s, SizeOf(m));
StrLCopy(PChar(s), @m, SizeOf(m));
Anton_K (2004-12-30 13:31:00) [3]
type
Tmyarray=array [1..32] of byte;
...
function ByteArrayToStr(a:Tmyarray):string;
...