|
|
|
Выполнение без ошибки.
|
|||
|---|---|---|---|
|
#18+
Я плохо выспался и у меня рябит в глазах или вот такое: Код: pascal 1. 2. 3. 4. 5. это нормально? В смысле того, что не вызывает ошибку? unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; TA = class(TObject) private procedure Something; end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var a: TA; begin a.Something end; procedure TForm1.FormCreate(Sender: TObject); begin end; { TA } procedure TA.Something; begin ShowMessage('TA.Something'); end; end. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2018, 22:05 |
|
||
|
Выполнение без ошибки.
|
|||
|---|---|---|---|
|
#18+
_Промешан_, вызываемый метод не задействует никаких данных экземпляра класса, поэтому не обращается к неинициализированной памяти, что могло бы вызывать ошибку (ср. классовые методы) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2018, 22:09 |
|
||
|
Выполнение без ошибки.
|
|||
|---|---|---|---|
|
#18+
_Промешан_это нормально? В смысле того, что не вызывает ошибку? Это нормально. 1. Компилятор не отслеживает инициализацию 2. В вызываемом методе нет обращения к внутренним полям объекта, потому фиолетово какой Self у него будет Будет метод виртуальным, или работающим с полями - будет и ошибка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2018, 22:14 |
|
||
|
Выполнение без ошибки.
|
|||
|---|---|---|---|
|
#18+
Код: pascal 1. Заменяем на Код: pascal 1. И радуемся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2018, 22:17 |
|
||
|
Выполнение без ошибки.
|
|||
|---|---|---|---|
|
#18+
Хотя метод объявлен в секции private и вообще не должен быть доступен для вызова вне класса. Но это так, детали ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2018, 22:20 |
|
||
|
Выполнение без ошибки.
|
|||
|---|---|---|---|
|
#18+
ГирлионайльдоХотя метод объявлен в секции private и вообще не должен быть доступен для вызова вне класса. Учи матчасть, студент... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2018, 22:22 |
|
||
|
Выполнение без ошибки.
|
|||
|---|---|---|---|
|
#18+
ГирлионайльдоХотя метод объявлен в секции private и вообще не должен быть доступен для вызова вне класса. Но это так, детали Это особенность Дельфей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2018, 22:28 |
|
||
|
Выполнение без ошибки.
|
|||
|---|---|---|---|
|
#18+
MBo_Промешан_, вызываемый метод не задействует никаких данных экземпляра класса, поэтому не обращается к неинициализированной памяти, что могло бы вызывать ошибку (ср. классовые методы) Ну и как бы нормально, что A <> NIL = TRUE? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2018, 22:29 |
|
||
|
Выполнение без ошибки.
|
|||
|---|---|---|---|
|
#18+
_Промешан_Ну и как бы нормально, что A <> NIL = TRUE? Нормально. Локальные переменные неуправляемых типов не инициализируются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2018, 22:42 |
|
||
|
Выполнение без ошибки.
|
|||
|---|---|---|---|
|
#18+
_Промешан_Ну и как бы нормально, что A <> NIL = TRUE? Да, это же локальная переменная, они не инициализируются автоматически (за исключением строк и т.п.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2018, 22:47 |
|
||
|
Выполнение без ошибки.
|
|||
|---|---|---|---|
|
#18+
ГирлионайльдоХотя метод объявлен в секции private и вообще не должен быть доступен для вызова вне класса. Но это так, детали strict private , если не хочешь дружественную видимость, или как она там называется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2018, 23:06 |
|
||
|
Выполнение без ошибки.
|
|||
|---|---|---|---|
|
#18+
А вот интересная вещь творится, потому как VCL пистрит именно private секциями которыми в будущем нельзя воспользоваться. К примеру TLanguages,...,TMonitor Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Код: pascal 1. 2. Нельзя получить доступ к этим функциям, даже если создать TMonitor отдельно ... Может тогда существует отдельная опция ? Включающая строгий режим в unit-е ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2018, 00:01 |
|
||
|
Выполнение без ошибки.
|
|||
|---|---|---|---|
|
#18+
Гирлионайльдо, класс Б может получить доступ к приватной секции класса А, если он находится в тоже модуле, что и класс А. Даже если они не связаны наследованием. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2018, 09:51 |
|
||
|
Выполнение без ошибки.
|
|||
|---|---|---|---|
|
#18+
ГирлионайльдоА вот интересная вещь творится, потому как VCL пистрит именно private секциями которыми в будущем нельзя воспользоваться. Кому нельзя? Соседям по юниту - можно, что и применяют местами. А стороннему коду да, нельзя. На то он и private ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2018, 10:45 |
|
||
|
Выполнение без ошибки.
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey_Промешан_Ну и как бы нормально, что A <> NIL = TRUE? Нормально. Локальные переменные неуправляемых типов не инициализируются. Каких типов? Можно пример управляемого? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 22:57 |
|
||
|
Выполнение без ошибки.
|
|||
|---|---|---|---|
|
#18+
_Промешан_, авторэто нормально? В смысле того, что не вызывает ошибку? важно понимать, что исключение падает только при попытке доступа к данным класса, то есть к сэлфу. здесь доступа к сэлфу нет, соответственно всё работает нормально. непосредственно вызов метода у класса не приводит к проблемам, пока нет попытки доступа к сэлфу. более того - внутри метода можно проверить - создан ли сэлф или нет и если нет - то можно просто выйти или что-то вернуть в result. я видел реализации такого в коде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 23:37 |
|
||
|
Выполнение без ошибки.
|
|||
|---|---|---|---|
|
#18+
_Промешан_Каких типов? Можно пример управляемого? String. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 01:24 |
|
||
|
Выполнение без ошибки.
|
|||
|---|---|---|---|
|
#18+
makhaon...внутри метода можно проверить - создан ли сэлф или нет и если нет... Расскажи, пожалуйста - как это проверить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 01:51 |
|
||
|
Выполнение без ошибки.
|
|||
|---|---|---|---|
|
#18+
ГирлионайльдоА вот интересная вещь творится, потому как VCL пистрит именно private секциями которыми в будущем нельзя воспользоваться. К примеру TLanguages,...,TMonitor Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Код: pascal 1. 2. Нельзя получить доступ к этим функциям, даже если создать TMonitor отдельно ... Может тогда существует отдельная опция ? Включающая строгий режим в unit-е ? Зачем обращаться GetTop, если нужно делать так Код: pascal 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 08:04 |
|
||
|
Выполнение без ошибки.
|
|||
|---|---|---|---|
|
#18+
авторчто исключение падает только при попытке доступа к данным класса, то есть к сэлфу. здесь доступа к сэлфу нет, А разве ссылка на Self не передается как неявный параметр всегда? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 09:35 |
|
||
|
Выполнение без ошибки.
|
|||
|---|---|---|---|
|
#18+
BeltarА разве ссылка на Self не передается как неявный параметр всегда? Передается, но не проверяется на валидность же ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 10:43 |
|
||
|
Выполнение без ошибки.
|
|||
|---|---|---|---|
|
#18+
Beltar, передаётся. если сэлфа нет, передастся как раз nil. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 11:58 |
|
||
|
Выполнение без ошибки.
|
|||
|---|---|---|---|
|
#18+
DimaBr, Тут смысл никак нужно, а то что это невозможно, по возможности возможно с той же дверью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 11:59 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39740171&tid=2040059]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
168ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
| others: | 220ms |
| total: | 493ms |

| 0 / 0 |
