Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 12.10.2013, 23:11   #1
_Freak_
Пользователь
 
Регистрация: 26.03.2013
Сообщений: 25
По умолчанию Подскажите, что у меня не так

Код:
program CwQueue;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  cw_car;
var
  car: cw_car.Car;
begin
  car := Car.Create();
  car.model := 'BMW';
end.
Код:
unit cw_iprintable;

interface

type
  IPrintable = class(TObject)

  public
    procedure print; virtual; abstract;
  end;

implementation

end.
Код:
unit cw_car;

interface

uses
  cw_iprintable;

type
  Car = class(IPrintable)

  public
    constructor Create;

    procedure print; override;

    var
      brand: String;
      model: String;
      color: String;
      year: String;
      cost: String;

  end;

implementation

constructor Car.Create;
begin
 self.brand := '';
 self.model := '';
 self.color := '';
 self.year := '';
 self.cost := '';
end;


procedure Car.print;
begin
  writeln('Марка: ', brand);
  writeln('Модель: ', model);
  writeln('Цвет: ', color);
  writeln('Стоимость: ', cost);
end;

end.
Выдаёт: [DCC Warning] CwQueue.dpr(13): W1036 Variable 'car' might not have been initialized
И в run-time падает с access violitation. До этого с делфи не работал =(
Я понимаю, что тут где-то косяк с конструктором, но не могу понять где

Последний раз редактировалось _Freak_; 12.10.2013 в 23:17.
_Freak_ вне форума
Старый 12.10.2013, 23:28   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Хм... В теории все не так уж и плохо, кроме одного:
Цитата:
var
car: cw_car.Car;
У тебя переменная и тип имеют одно и то же имя, а это не хорошо.
Паскаль - регистронезависим, и такие вещи типа
Цитата:
car := Car.Create();
Говорят ему "Попытайся типу присвоить значение", а это противоречит всем основам.
Назови переменку другим именем.
I'm learning to live...
Stilet вне форума
Старый 12.10.2013, 23:30   #3
_Freak_
Пользователь
 
Регистрация: 26.03.2013
Сообщений: 25
По умолчанию

О, точно))) Я просто с плюсами больше работаю, а delphi в новинку =)
_Freak_ вне форума
Старый 13.10.2013, 00:21   #4
alextrof94
Форумчанин
 
Регистрация: 16.03.2013
Сообщений: 599
По умолчанию

Цитата:
Сообщение от _Freak_ Посмотреть сообщение
О, точно))) Я просто с плюсами больше работаю, а delphi в новинку =)
Не убедительное оправдание. В плюсах везде учат классы начинать с C, а структуры с S (от Class: CCar, от Struct: SCar). В паскале/дельфях и то и другое начинают обычно с T (от Type: TCar).
alextrof94$gmail.com
alextrof94 вне форума
Старый 13.10.2013, 00:44   #5
_Freak_
Пользователь
 
Регистрация: 26.03.2013
Сообщений: 25
По умолчанию

Как называть класс не столь принципиально, но в данном случае это помогло бы просто избежать ошибки

Цитата:
Сообщение от alextrof94 Посмотреть сообщение
Не убедительное оправдание. В плюсах везде учат классы начинать с C, а структуры с S (от Class: CCar, от Struct: SCar). В паскале/дельфях и то и другое начинают обычно с T (от Type: TCar).
Это где ж такому учат?

Последний раз редактировалось Stilet; 13.10.2013 в 11:02.
_Freak_ вне форума
Старый 13.10.2013, 01:37   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от alextrof94 Посмотреть сообщение
Не убедительное оправдание. В плюсах везде учат классы начинать с C, а структуры с S (от Class: CCar, от Struct: SCar). В паскале/дельфях и то и другое начинают обычно с T (от Type: TCar).
впервые слышу чтоб учили.

а вот в Делфи насчет T это принято, да.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума
Старый 13.10.2013, 02:39   #7
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Цитата:
такие вещи типа
Цитата:
car := Car.Create();
Говорят ему "Попытайся типу присвоить значение", а это противоречит всем основам.
Не. Такие вещи говорят ему "Вызови конструктор у экземпляра класса, ссылка на который содержится в переменной Car. Поскольку идентификатор первым делом ищется в самом модуле.

Последний раз редактировалось northener; 13.10.2013 в 02:44.
northener вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Turbo Pascal исправьте меня что не так виталик66 Помощь студентам 0 21.05.2012 20:59
Ошибка! Подскажите что не так? stear Общие вопросы C/C++ 7 10.12.2009 16:12
Подскажите, что не так SWAT Паскаль, Turbo Pascal, PascalABC.NET 0 15.06.2009 15:15
Подскажите что не так... SynonymMixer Работа с сетью в Delphi 10 26.01.2009 23:49
Подскажите что тут не так!? dcl Общие вопросы Delphi 5 28.03.2007 08:15