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

Вниз

Программа вылетает, если переменная принадлежит классу.   Найти похожие ветки 

 
User   (2011-01-10 14:30) [0]

Вот исходный код:


program Project1;  {$APPTYPE CONSOLE}  {$o-}
uses Windows;

const Size = 100;

//var  PB:PByte;  //  <-- it"s OK

type
 TRND = class
private
  PB:PByte; // <-- it"s an ERROR
 public
  Constructor  create;
  Destructor Free;
end;

Constructor TRND.Create;
begin
 GetMem(PB,Size);  // <-- Runtime error
end;

Destructor TRND.Free;
begin
 FreeMem(PB);
end;

var RND:TRND;

begin
 RND.Create;
 readln;
 RND.Free;
end.


Если переменная PB:PByte описывается как глобальная переменная, то всё ОК, но если сделать её членом класса, то программа вылетает с ошибкой в конструкторе, где выделяется память: GetMem(PB,Size);

В чём здесь ошибка?


 
DiamondShark ©   (2011-01-10 14:34) [1]


> В чём здесь ошибка?

В ДНК.


>  RND.Create;

RND := TRND.Create;


 
User   (2011-01-10 14:36) [2]

>RND := TRND.Create;

Спасибо!


 
Amoeba_   (2011-01-10 23:19) [3]

И негоже писАть такое:

> Destructor Free;

Корректно будет:

destructor Destroy; override;

P.S. Учите матчасть.


 
Юрий Зотов ©   (2011-01-10 23:48) [4]

И еще: судя по коду, объект должен существовать в программе в единственном экземпляре - так почему бы не сделать его синглтоном (например, перекрыв методы NewInstance и FreeInstance). Дел на 2 минуты, а надежность программы повысится.


 
DiamondShark ©   (2011-01-11 13:23) [5]


> а надежность программы повысится.

Юрий Зотов -- неисправимый оптимист!


 
Anatoly Podgoretsky ©   (2011-01-11 13:47) [6]


> Юрий Зотов ©   (10.01.11 23:48) [4]

Тогда вообще придется крест на программе ставить.



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

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

Наверх




Память: 0.48 MB
Время: 0.01 c
1-1251722023
Spot
2009-08-31 16:33
2011.04.10
Ошибка при поиске в Excel


15-1293223383
Stenfit
2010-12-24 23:43
2011.04.10
перевод


2-1294602867
mefodiy
2011-01-09 22:54
2011.04.10
Ошибка при использовании TRxMemoryData


15-1291411633
Nic
2010-12-04 00:27
2011.04.10
Недорогой телефон с сенсорным экраном


15-1293043000
Rule
2010-12-22 21:36
2011.04.10
Мое первое iOS прилоежние