![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Привет камрады.
Подскажите. почему этот код не работает во втором случае, когда массив динамический? Код:
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])); |