![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не работает код в Delphi XE2
Undria © (2011-09-25 02:18:00)Здравствуйте.
Имеется код, который нормально работает в D2010 и в XE, но не хочет работать в XE2 (выдаёт AV). Все настройки проекта одинаковы для всех трёх версий. Код такой:
var
FList: PPointerList;
procedure TForm1.Button1Click(Sender: TObject);
var
pc:pchar;
begin
pc:='Test';
ReAllocMem(FList, 256 * SizeOf(Pointer));
FList^[0] := pc; // тут в XE2 AV выскакивает
ShowMessage(pchar(FList^[0]));
end;
В 2010 и XE работает и в DEBUG и в RELEASE (платформа - Win32). В XE2 - AV в любой конфигурации.
Чего в этом коде не нравится XE2?
Undria (2011-09-28 02:04:00) [1]Вот что значит работать на чужом компе, где стоят какие-то мутные триалы без исходников и хелпа, + в Инет нет возможности залезть..
Код DVMпришлось немного изменить, но теперь всё работает.
Спасибо!
DVM (2011-09-25 10:36:00) [2]
var
List: TPointerList;
procedure TForm1.Button1Click(Sender: TObject);
var
pc: PChar;
begin
pc := 'Test';
SetLength(List, 256);
List[0] := PChar(pc);
ShowMessage(PChar(List[0]));
end;
DVM (2011-09-25 10:34:00) [3]В XE2 TPointerList - динамический массив, поэтому так нельзя
Undria (2011-09-25 02:45:00) [4]В догонку: тестил на Vista SP2 и Win7 SP1 (Ultimate). Всё - Win32 (как и target platform в проекте Delphi XE2).