Форум: "Начинающим";
Текущий архив: 2012.01.01;
Скачать: [xml.tar.bz2];
ВнизНе работает код в 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.004 c