Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Keywords: record, class, interface, object. Object?


Страницы:   1 2 3

PavDimka ©   (2010-09-24 15:39:00) 

О первых двух написано очень много, об интерфейсах чуть меньше, но что такое объект (object). Мы все привыкли считать под этим словом любой класс (TObject).
А как Вам такой код?

program Project1;

{$APPTYPE CONSOLE}

uses
 SysUtils;

Type
 TMyObject = object
 strict private
   FValue: Int32;
   procedure SetValue(const AValue: Int32);
 public
   TextString: String;
   property Value: Int32 read FValue write SetValue;
 end;

{ MyObject }

procedure TMyObject.SetValue(const AValue: Int32);
begin
 FValue := AValue;
end;

var
 MyObject : TMyObject;

begin
 SetLastError(0);
 try
   MyObject.TextString := 'Test Object';
   MyObject.Value := SizeOf(TMyObject);
   WriteLn(MyObject.TextString);
   WriteLn('Size Of object = ' + IntToStr(MyObject.Value));
 except
   on E: Exception do
     Writeln(E.ClassName, ': ', E.Message);
 end;
 if not GetLastError = 0 then
 WriteLn('Find Error number: ' + intToStr(GetLastError));
 ReadLn;
end.


Удивительно, но на RAD 2010 этот код работат, не пробовал на других, но в нём есть одно преимущество.

когда я пишу так:
MyObject.и нажимаю пробел, то в выпадающем списке имею только то что сам положил в секцию public (секция published отсутствует). То есть на экране для данного примера появляется
var TextString: String;
property Value: Integer;
что в некоторых случаях очень удобно.


Leonid Troyanovsky   (2010-09-28 19:30:00) [1]


> 6x8   (28.09.10 18:17) [38]

> Глупости. Для меня Вы ровно такой-же аноним, как и я для
> Вас. В базе этого форума наверняка десятки мёртвых аккаунтов,
>  что изменится, если добавится ещё один? В сети все анонимы,
>  и если Вы даже укажете в анкете свой точный адрес, для
> большинства иногородних останетесь всё тем-же анонимом.
> Они будут знать сетевой персонаж, но не реального человека,
>  улавливаете мою мысль?

Не улавливаем :(
А чего, в реал гейта нет?

--
Regards, LVT.


Юрий Зотов   (2010-09-28 19:06:00) [2]


> 6x8   (28.09.10 18:17) [38]

> Вы никак не могли оценить мой уровень, у Вас для этого просто
> недостаточно данных.

Достаточно. Вы сами его обозначили (см. [28]). Человек, знающий об атрибутах страниц, VirtualProtect и о выполнении кода в стеке имеет вполне достаточный для сабжа уровень. Хотя, пример кода, конечно, не помешал бы - он позволил бы понять, реален ли этот уровень, или всего лишь из серии "слышал звон".

> Я его не доддерживаю и не осуждаю - мне он по барабану,
Не виляйте. Если бы это было так, то [28] не появилось бы.

> Что-то я не видел, чтобы Вы вмешались, когда кто-то из завсегдатаев
> вёл себя некорректно.

Вы или плохо видите, или недавно здесь. Вмешивался, и не раз.

> Да не собираюсь я ни спасать, ни переделывать мир
Снова - не виляйте. Если бы это было так, то с чего это Вы вдруг решили бороться за чистоту нравов?

> Да ладно, не переживайте, надоело мне здесь.
Это называется: "поквакал - и в тинку". Что ж, дело Ваше. До свидания.

PS.
Совет: если Вы вдруг все же вздумаете снова побороться за чистоту нравов - здесь, или где то еще - то, наверное, не будет лишним сначала вникнуть в ситуацию поглубже, чем Вы это сделали только что.


Anatoly Podgoretsky   (2010-09-28 19:03:00) [3]


> Да ладно, не переживайте, надоело мне здесь.

Наконец настал момент такой.

> не собираюсь здесь  надолго задерживаться.


6x8   (2010-09-28 18:17:00) [4]


>  1. С чего Вы взяли, что я неискренен? Непонятно.

Да с того, что Вы никак не могли оценить мой уровень, у Вас для этого просто недостаточно данных. Что тут непонятного?


> 2. Если Вы не одобряете духа здешнего форума, то зачем Вы
> поддерживаете его, высказываясь в нем же? Непонятно.

Я его не доддерживаю и не осуждаю - мне он по барабану, и я всё равно не собираюсь здесь  надолго задерживаться. Но мне не нравятся законы дворовых шаек, в которых каждый член всегда прав уже потому, что он свой. А не свой всегда неправ потому, что он чужак. И меня забавляет, когда член такой шайки сам оказывается в неприятном положении. Что тут непонятного?


> 3. Если Вы считаете, что ко мне лично это не относится,
> то почему пост [28] адресован именно мне лично? Непонятно.

Потому, что Вы член местного сообщества. Что-то я не видел, чтобы Вы вмешались, когда кто-то из завсегдатаев вёл себя некорректно. А это означает молчаливый одобрямс,
что тут непонятного?

> 4. Что за трусливая (извините, но факт есть факт) манера
> писать нелицеприятные вещи, прикрываясь анонимностью?

Глупости. Для меня Вы ровно такой-же аноним, как и я для Вас. В базе этого форума наверняка десятки мёртвых аккаунтов, что изменится, если добавится ещё один? В сети все анонимы, и если Вы даже укажете в анкете свой точный адрес, для большинства иногородних останетесь всё тем-же анонимом. Они будут знать сетевой персонаж, но не реального человека, улавливаете мою мысль?

> 5. Вместо того, чтобы помочь топикстартеру, Вы затеяли склоку
> (да-да, затеяли ее именно Вы, причем без всякого повода).
>  После этого - Вам ли говорить о духе форума?

Склоку?! Забавно.
Да не собираюсь я ни спасать, ни переделывать мир, пусть себе катится. И топикстартеру помогать не собирался, с чего-бы вдруг? Я себе ни в святые, ни в апостолы не записывал.

Да ладно, не переживайте, надоело мне здесь.


Юрий Зотов   (2010-09-28 16:23:00) [5]

> 6x8   (28.09.10 13:55) [33]

1. С чего Вы взяли, что я неискренен? Непонятно.

2. Если Вы не одобряете духа здешнего форума, то зачем Вы поддерживаете его, высказываясь в нем же? Непонятно.

3. Если Вы считаете, что ко мне лично это не относится, то почему пост [28] адресован именно мне лично? Непонятно.

4. Что за трусливая (извините, но факт есть факт) манера писать нелицеприятные вещи, прикрываясь анонимностью?

5. Вместо того, чтобы помочь топикстартеру, Вы затеяли склоку (да-да, затеяли ее именно Вы, причем без всякого повода). После этого - Вам ли говорить о духе форума?


6x8   (2010-09-28 15:14:00) [6]


> А глядишь не стой.

Да с той, с той. Я ведь с тебя в основном пример беру. Ученик, можно сказать.


Anatoly Podgoretsky   (2010-09-28 14:57:00) [7]

> 6x8  (28.09.2010 13:56:34)  [34]

Ну за этим дело не встанет. Но пока особо не за что.

А пока впечатление такое, и оно идет в противовес с "Я вот тут походил по
веткам, получил общее впечатление - завсегдатаи зачастую говорят с разными
"пришлыми" на грани хамства, открытого или завуалированного. Иногда за
гранью. Вот я подумал, почему-бы не помочь людям взглянуть на ситуацию с,
так-сказать, с другой стороны."

А глядишь не стой.


6x8   (2010-09-28 13:56:00) [8]


> Anatoly Podgoretsky ©   (28.09.10 13:31) [32]


> Ему интереснее шляться по ветками и нападать на всех.

В точку. Развлекаюсь за чужой счёт, пока не забанят.


6x8   (2010-09-28 13:55:00) [9]


> Юрий Зотов ©   (28.09.10 13:05) [31]

Сарказм так себе, да и знания мои по нескольким постам оценить невозможно, а они вобщем-то средние, может чуть выше. Вы неискренни, а жаль.

За конструктив - а по-моему, я высказываюсь вполне в духе здешнего форума. Я вот тут походил по веткам, получил общее впечатление - завсегдатаи зачастую говорят с разными "пришлыми" на грани хамства, открытого или завуалированного. Иногда за гранью. Вот я подумал, почему-бы не помочь людям взглянуть на ситуацию с, так-сказать, с другой стороны.

Но к Вам лично это вроде не относится, потому - прошу извинить, мне жаль.


Anatoly Podgoretsky   (2010-09-28 13:31:00) [10]

> Юрий Зотов  (28.09.2010 13:05:31)  [31]

Ему интереснее шляться по ветками и нападать на всех.


Юрий Зотов   (2010-09-28 13:05:00) [11]


> 6x8   (27.09.10 14:02) [28]

Ваш сарказм блестящ, но лучше бы Вы помогли топикстартеру простым примером кода. Это было бы куда более конструктивно, нежели упражнения в демонстрации Ваших, безусловно, глубоких познаний.


han_malign   (2010-09-28 11:43:00) [12]


> Удивительно, но на RAD 2010 этот код работат

- а BDS 2006 на это почему то ругался, приходилось делать:
{$IF CompilerVersion >= 18.0} record{$ELSE}object{$IFEND}...


icWasya   (2010-09-27 16:00:00) [13]

Помимо всего прочего, в ссылках на другие процедуры по умолчанию ставятся относительные адреса. Если в скопированной процедуре есть вызовы других процедур - гарантировано получим AV.


6x8   (2010-09-27 14:02:00) [14]


> Страница динамически выделенной памяти должна иметь атрибут
> Executable (как-то так он называется), иначе при вызове
> получим облом. Есть, правда, обходной маневр, но говорить
> о нем публично вряд ли стоит.


О чём, о VirtualProtect? Ну да, это-же секретная функция, описанная в секретном разделе MSDN. А MakeObjectInstance так вообще основана на Тайном Знании, натурально.


> Поскажу, но не более: Windows разрешает исполнение кода
> в стеке.


Ага, правильно. Только наоборот.


Германн   (2010-09-25 02:16:00) [15]


> целый форум этим объектам посвящён

Мёртвое дело, имхо.


RWolf   (2010-09-25 00:02:00) [16]


> PavDimka   (24.09.10 17:00) [15]
> до этого я спросил 6 человек и никто о ничего вообще не слышал.

тут на дельфимастерах целый форум этим объектам посвящён.
точнее, фреймворку, что на них основан.
http://delphimaster.ru/cgi-bin/forum.pl?n=10


Юрий Зотов   (2010-09-24 18:35:00) [17]


> PavDimka   (24.09.10 18:23) [22]

Поскажу, но не более: Windows разрешает исполнение кода в стеке.
Дальше - сами. Там несложно.


PavDimka   (2010-09-24 18:34:00) [18]

Call dword ptr [ebp-$04] - ошибка. Вызываю без атрибутов/
GetLastError = 126


Юрий Зотов   (2010-09-24 18:30:00) [19]

Видимо, тот самый облом и есть.


PavDimka   (2010-09-24 18:23:00) [20]

Выходит ошибка Access Violation


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо