Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Класс - ошибка 
:(
    Опции темы
slavonX86
Дата 22.2.2006, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 15.12.2005

Репутация: 0
Всего: 0



Когда я пишу СlassXXX.p1 := 100; выдаёт ошибку ! Почему ?

Код

unit Unit2;

interface

uses
  SysUtils, Classes, Windows;

type
  TXXX = class
    p1: Longint;
    s: String;
    Procedure NEW;
  end;

var
  ClassXXX: TXXX

implementation

Procedure TXXX.NEW;
Begin

End;

End.

PM MAIL ICQ   Вверх
Romikgy
Дата 22.2.2006, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



Цитата(slavonX86 @ 22.2.2006, 16:47 Найти цитируемый пост)
выдаёт ошибку

Какую?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Bose
Дата 22.2.2006, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

Репутация: 23
Всего: 51



Цитата(slavonX86 @ 22.2.2006, 17:47 Найти цитируемый пост)
Когда я пишу СlassXXX.p1 := 100; выдаёт ошибку ! Почему ?


потому что класс вначале создать надо smile

Код

ClassXXX:= TXXX.Create;


PM MAIL WWW Skype   Вверх
slavonX86
Дата 22.2.2006, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 15.12.2005

Репутация: 0
Всего: 0



а Procedure NEW; работает
PM MAIL ICQ   Вверх
Bose
Дата 22.2.2006, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

Репутация: 23
Всего: 51



Цитата(slavonX86 @ 22.2.2006, 18:08 Найти цитируемый пост)
а Procedure NEW; работает

а что делает процедура New?

PM MAIL WWW Skype   Вверх
Snowy
Дата 22.2.2006, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Потому что это процедура класса.
А процедуры могут работать без создания объекта класса.
А конструкторы вообще должны работать только так.
А вот к данным без создания элементов не обратиться - нужно сначала память выделить.
Под методы память выделять не нужно - они уже в коде сидят.
Поэтому и работают. (Если конечно в них к полям не обращаться).
PM MAIL   Вверх
slavonX86
Дата 22.2.2006, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 15.12.2005

Репутация: 0
Всего: 0



ClassXXX:= TXXX.Create;
А при выходе из программы он автоматически разрушается не оставляя в памяти следов ?

А можно как-то зделать чтобы класс автоматически создавался при запуске программы ?

Это сообщение отредактировал(а) slavonX86 - 22.2.2006, 21:55
PM MAIL ICQ   Вверх
Foley
Дата 22.2.2006, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фсемба Яцца
*


Профиль
Группа: Участник
Сообщений: 235
Регистрация: 31.1.2006
Где: Россия, Арх.обл

Репутация: 2
Всего: 7



Цитата(slavonX86 @ 22.2.2006, 21:52 Найти цитируемый пост)
А можно как-то зделать чтобы класс автоматически создавался при запуске программы

на FormCreate пропиши создание класса....


Цитата(slavonX86 @ 22.2.2006, 21:52 Найти цитируемый пост)
А при выходе из программы он автоматически разрушается не оставляя в памяти следов

если не доверяешь то Free высвобождает память... можешь на FormDestroy написать...
Добавлено @ 22:41
тока для начала переменную класса сделай глобальной...
PM MAIL ICQ   Вверх
Yanis
Дата 23.2.2006, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



Цитата(slavonX86 @ 22.2.2006, 21:52 Найти цитируемый пост)
А можно как-то зделать чтобы класс автоматически создавался при запуске программы ?

Можно если в самом файле проекта создавать этот класс, а потом его убивать. Например:
Код

program Project1;

uses { ... }

{$R *.res}

begin
  { создаём класс ... }
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
  { ... убиваем класс }
end.


Или же можно таким образом:
Код

unit Unit1;

interface

uses  { List of units goes here }

  { Interface section goes here }

implementation

uses  { List of units goes here }

  { Implementation section goes here }

initialization
  { Initialization section goes here }

finalization
  { Finalization section goes here }

end.

В initialization создаёшь класс, в finalization убиваешь его. т.е. в модуле (главной) формы дописать эти секции, а в них уже и делать, то что душе угодно.


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0658 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.