Главная страница
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.014 c
15-1293139789
Юрий
2010-12-24 00:29
2011.04.10
С днем рождения ! 24 декабря 2010 пятница


15-1292731851
Дмитрий С
2010-12-19 07:10
2011.04.10
К вопросу планетах.


15-1292941578
aka
2010-12-21 17:26
2011.04.10
как бороться с негодяем?


15-1293027819
картман
2010-12-22 17:23
2011.04.10


1-1252240815
atruhin
2009-09-06 16:40
2011.04.10
Delphi 2009/2010 string какой стандарт unicode?