Вы можете почти определить это так, как вы это сделали:
var
MyArray: array[0..MAX_PATH] of AnsiChar = ('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', #0);
Но тогда вы получите сообщение об ошибке с количеством элементов, поэтому вам придется добавить еще 250 дополнительныхнули для его завершения:
// Possible, but not necessary, see below
var
MyArray: array[0..MAX_PATH] of AnsiChar =
('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
'I', #0, #0, #0, #0, ....
...
...
... #0, #0, #0);
Однако это можно сделать намного проще:
var
MyArray: array[0..MAX_PATH] of AnsiChar = 'ABCDEFGHI';
Этот специальный синтаксис должен работать в большинстве версий Delphi и не вызывать ошибку компилятора.
Для длины во время send () вам нужно будет использовать StrLen () , а не Length () :
send(S, MyArray, StrLen(MyArray) + 1, 0);
В качестве альтернативы вы можете сделать это:
var
Stg: AnsiString;
begin
Stg := 'ABCDEFGHI';
// Second parameter is untyped const, so use ^
send(S, PAnsiChar(Stg)^, Length(Stg) + 1, 0);
FWIW, #0
- символ с порядковым значением 0 .Альтернативы:
Chr(0)
#0
^@ (meaning Control+@; ^A = #1 = Chr(1), ^M = #13, etc.)
Каждое из перечисленных значений имеет одинаковое значение.