Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2011.04.10;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.005 c
10-1173096821
skosenok
2007-03-05 15:13
2011.04.10
Разные ServerName для двух Class-ов в одной ActiveX


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


9-1186778469
Gari
2007-08-11 00:41
2011.04.10
Проигрование звука в игре


15-1293312589
Юрий
2010-12-26 00:29
2011.04.10
С днем рождения ! 26 декабря 2010 воскресенье


1-1252149503
zod33
2009-09-05 15:18
2011.04.10
Копонент TMemo





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский