Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Не работает код в 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).


Наверх

Титульная страница Поиск, карта сайта Написать письмо