Показать сообщение отдельно
  #1  
Старый 28.09.2017, 16:58
dimonsky dimonsky вне форума
Прохожий
 
Регистрация: 17.02.2013
Сообщения: 3
Репутация: 10
По умолчанию array of ansichar to ansistring - динамический массив не трансформируется

Привет камрады.
Подскажите. почему этот код не работает во втором случае, когда массив динамический?

Код:
procedure TForm1.Button1Click(Sender: TObject);
var buf: array [0..10] of AnsiChar;
    str:ansistring;
begin
    FillMemory(@buf[0],11,0);

    buf[0]:='_';
    buf[1]:='H';
    buf[2]:='E';
    buf[3]:='L';
    buf[4]:='L';
    buf[5]:='O';

    str:=ansistring(buf);
    ShowMessage(str);
    if Pos('HELL',str)>0 then
        ShowMessage('FOUND');
end;

procedure TForm1.Button2Click(Sender: TObject);
var buf: array of AnsiChar;
    str:ansistring;
begin
    setlength(buf,11);

    FillMemory(@buf[0],11,0);

    buf[0]:='_';
    buf[1]:='H';
    buf[2]:='E';
    buf[3]:='L';
    buf[4]:='L';
    buf[5]:='O';

    str:=ansistring(buf);
    ShowMessage(str);
    if Pos('HELL',str)>0 then
        ShowMessage('FOUND');

end;
Ответить с цитированием