Конференция "Начинающим" » Не работает код в Delphi XE2
 
  • Undria (25.09.11 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 (25.09.11 02:45) [1]
    В догонку: тестил на Vista SP2 и Win7 SP1 (Ultimate).  Всё - Win32 (как и target platform в проекте Delphi XE2).
  • DVM © (25.09.11 10:34) [2]
    В XE2 TPointerList - динамический массив, поэтому так нельзя
  • DVM © (25.09.11 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 (28.09.11 02:04) [4]
    Вот что значит работать на чужом компе, где стоят какие-то мутные триалы без исходников и хелпа, + в Инет нет возможности залезть..

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

    Спасибо!
 
Конференция "Начинающим" » Не работает код в Delphi XE2
Есть новые Нет новых   [134431   +10][b:0][p:0.001]