|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
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; Последний раз редактировалось dimonsky, 28.09.2017 в 16:59. Причина: поправил заголовок |
#2
|
||||
|
||||
Да нет, и первый и второй обработчики отрабатывают без ошибок
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#3
|
|||
|
|||
мм. XE5 - не работает второй случай.
Показывает пустое сообщение, а подстроку вообще не находит. Под 64бит вообще глючит даже если дебагером проходить. Удалось пофиксить только так: Код:
str:=ansistring(PAnsiChar(@buf[0])); |