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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.10.2014, 21:50   #11
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
хотя бы хрустального попугая..
Который умеет кричать "Пиастры" на 17-ти языках мира
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.10.2014, 21:51   #12
indexx
Заблокирован
 
Регистрация: 12.09.2014
Сообщений: 544
По умолчанию

Цитата:
с использанием переменной - экземляра класса
Я бы использовал with
indexx вне форума Ответить с цитированием
Старый 23.10.2014, 21:56   #13
нуб7
Пользователь
 
Регистрация: 22.10.2014
Сообщений: 13
По умолчанию

ПО БРИЛЛИАНТОВОЙ СОВЕ КАЖДОМУ!!! Если все это сработает,я просто охренеть как буду счастлив! Спасибо вам,господа знатоки))))
нуб7 вне форума Ответить с цитированием
Старый 23.10.2014, 21:59   #14
indexx
Заблокирован
 
Регистрация: 12.09.2014
Сообщений: 544
По умолчанию

Сработает. Ошибку то запомни. Нельзя работать с не инициализированным объектом, ибо нельзя обращаться к тому, что не существует.
indexx вне форума Ответить с цитированием
Старый 23.10.2014, 22:37   #15
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Да ты не переживай.

Если не сработает, приходи )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.10.2014, 22:53   #16
abit
Пользователь
 
Регистрация: 21.10.2014
Сообщений: 43
По умолчанию

Цитата:
если совы закончились, то мне хотя бы хрустального попугая..
оставьте мне хоть лапку от попугая... я вот что умею:
Код:
program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;

const s:string='12+456';
type TMyClass = class
    constructor Create(a:string);
private
    Number1,Number2:integer;
    Operation:char;
public
    function Rastshet():integer;
end;

constructor TMyClass.Create(a:string);
    var i,n:integer; buf:string='';
begin
    n:=length(a);
    for i:=1 to n do if ord(a[i]) in [48..57] then buf:=buf+a[i] else break;
    Number1:=strtoint(buf);
    delete(a,1,length(buf));
    Operation:=Chr(Ord(a[1]));
    delete(a,1,1);
    Number2:=StrToInt(a);
end;
function TMyClass.Rastshet():integer;
begin
    case Operation of
    '+':Rastshet:=Number1+Number2;
    '-':Rastshet:=Number1-Number2;
end;
end;
    var MyObj:TMyClass;
begin
    writeln('Stroka s: ',s);
    MyObj:=TMyClass.Create(s);
    writeln('Rezultat: ',s,' = ',MyObj.Rastshet);
    Readln;
end.
abit вне форума Ответить с цитированием
Старый 23.10.2014, 23:03   #17
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Освободишь объект - получишь лапку.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.10.2014, 23:09   #18
abit
Пользователь
 
Регистрация: 21.10.2014
Сообщений: 43
По умолчанию

Цитата:
Сообщение от indexx Посмотреть сообщение
Сработает. Ошибку то запомни. Нельзя работать с не инициализированным объектом, ибо нельзя обращаться к тому, что не существует.
на самом деле вы не правы, не всегда нужно создавать объект, чтобы обращаться к его методам, посмотрите например как работает TObject.Free

вот более конкретный пример:
Код:
type
  TClassFoo = class
  public
    procedure Foo;
  end;

procedure TClassFoo.Foo;
begin
  WriteLn('Hello class world!!!');
end;

begin
  TClassFoo(nil).Foo;
  Readln;
end.
to Stilet
это только за вторую лапку
abit вне форума Ответить с цитированием
Старый 23.10.2014, 23:12   #19
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
это только за вторую лапку
За вторую лапку ты дашь точный ответ "Почему и в каких случаях объект создавать обязательно а в каких это упущение может и не привести к крэшу программы".
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.10.2014, 23:27   #20
abit
Пользователь
 
Регистрация: 21.10.2014
Сообщений: 43
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
За вторую лапку ты дашь точный ответ "Почему и в каких случаях объект создавать обязательно а в каких это упущение может и не привести к крэшу программы".
Да на самом деле размышления тут просты, если у нас есть некий класс с полями и методами, то что из себя представляет объект этого класса? Это просто указатель на область памяти, где лежат данные класса... т.е. даже добавлю - нестатичные данные класса, а вот методы класса в отличии от полей лежат отдельно и в одном экземпляре, поэтому вопрос только как к ним обратиться MyObj:=TMyClass.Create(s) в моём коде - типичный пример... (конечно там по хорошему в конструкторе нужен inherited, но сейчас это рудимент), так я заслужил вторую лапку или остались вопросы?

Последний раз редактировалось abit; 23.10.2014 в 23:31.
abit вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Привести к треугольному виду(процедуры) komjkee Паскаль, Turbo Pascal, PascalABC.NET 0 18.12.2013 21:35
Привести систему к треугольному виду MrDelni Помощь студентам 1 25.03.2013 17:05
Задача: привести систему к треугольному виду limaxY Помощь студентам 1 07.06.2011 08:50
Как привести к виду для счета? Диагностик Microsoft Office Excel 11 10.04.2009 14:57
Как привести числа к другому виду Людмилка Microsoft Office Excel 1 18.11.2008 10:19