Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2012.01.01;
Скачать: CL | DM;

Вниз

Не работает код в Delphi XE2   Найти похожие ветки 

 
Undria   (2011-09-25 02:18) [0]

Здравствуйте.

Имеется код, который нормально работает в 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-25 02:45) [1]

В догонку: тестил на Vista SP2 и Win7 SP1 (Ultimate).  Всё - Win32 (как и target platform в проекте Delphi XE2).


 
DVM ©   (2011-09-25 10:34) [2]

В XE2 TPointerList - динамический массив, поэтому так нельзя


 
DVM ©   (2011-09-25 10:36) [3]


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;


 
Undria   (2011-09-28 02:04) [4]

Вот что значит работать на чужом компе, где стоят какие-то мутные триалы без исходников и хелпа, + в Инет нет возможности залезть..

Код DVM пришлось немного изменить, но теперь всё работает.

Спасибо!



Страницы: 1 вся ветка

Текущий архив: 2012.01.01;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.01 c
15-1312403395
Юрий
2011-08-04 00:29
2012.01.01
С днем рождения ! 4 августа 2011 четверг


2-1316683686
pavor
2011-09-22 13:28
2012.01.01
Длина поля String в ClientDataSet


1-1278875240
dyonysos
2010-07-11 23:07
2012.01.01
MessageBox из TService


2-1317030684
Gu
2011-09-26 13:51
2012.01.01
Передать commandline


15-1315081792
Юрий
2011-09-04 00:29
2012.01.01
С днем рождения ! 4 сентября 2011 воскресенье