![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Keywords: record, class, interface, object. Object?
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