![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с доступом к private-членам класса [D6]
DJones © (2008-10-13 11:09:00)Вот такой класс, при попытке обратиться к private - массивам в методах GetReg ил setReg получаю Instance variable is inassessible here... Никак не могу понять, в чем моя ошибка ...
unit MyConfig;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type // ôîðìà
TMainForm = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
type
rDataStructure = record
reg :Byte;
value :Byte;
end;
TDataArray = array [1..30] of rDataStructure;
TDataArrayA = array [0..10] of rDataStructure;// ïîä ïàðàìåòðû ïîðòà ìîäóëÿ
type Config = class (TObject)
private
dataArrA : array [0..5] of TDataArrayA;
dataarrayB : array [0..33] of rDataStructure;
public
constructor Create;
class function getReg (port, reg: byte) : byte;
class function setReg (port, reg, value : byte) : Boolean;
end;
var
MainForm: TMainForm;
implementation
{$R *.dfm}
class function Config.getReg (port, reg: byte) : Byte;
var i : integer;
begin
end; // Getreg
constructor Config.Create;
var port, i: Integer;
begin
dataArrA[0][1].reg:=0;
end; // Create
class function Config.setReg (port, reg, value : byte) : Boolean;
var i : integer; // ïðîñòî ñ÷åò÷èê äëÿ öèêëà
begin
//dataArrA[0][1].reg:=0;
end; // SetReg
end.
Leonid Troyanovsky (2008-10-14 22:49:00) [1]
> DJones (14.10.08 15:42) [16]
> Совершенно верно, проблему нашел - криво вызывал конструктор
> - mc.Create вместо mc:=Config.Create
http://podgoretsky.com/OtherParts/DM/BadTips.aspx?#08
--
Regards, LVT.
Сергей М. (2008-10-14 15:59:00) [2]
> DJones (14.10.08 15:33) [13]
Не обязан.
Они автоматически заполняются нулями (в тех или иных ипостасях нуля).
DJones (2008-10-14 15:42:00) [3]Совершенно верно, проблему нашел - криво вызывал конструктор - mc.Create вместо mc:=Config.Create
Плохиш (2008-10-14 15:39:00) [4]
> DJones (14.10.08 15:02) [11]
> Еще одна прблема в данной проге - после выполнения конструктора
> приходит 'Asess violation ... at module', все проверил,
> даже с пустым телом конструктора то же самое... Объект
> класса создается в другом юните, в uses которого модуль
> MyConfig прописан ....
Бессмысленные слова, не имеющие никакого отношения к проблеме.
Плохиш (2008-10-14 15:37:00) [5]
> DJones (14.10.08 15:33) [13]
> В конструкторе я обязан проинициализировать ВСЕ поля класса?
Если они являются указателями, то - да.
DJones (2008-10-14 15:33:00) [6]В конструкторе я обязан проинициализировать ВСЕ поля класса?
Ega23 (2008-10-14 15:23:00) [7]
> после выполнения конструктора приходит 'Asess violation
> ... at module', все проверил, даже с пустым телом конструктора
> то же самое... Объект класса создается в другом юните, в
> uses которого модуль MyConfig прописан ....
Это означает, что ты обращаешься к чему-то, ещё не созданному (или непроинициализированному), или уже убитому, но с сохранением указателя.
Очень помогает F7-F8.
DJones (2008-10-14 15:02:00) [8]Еще одна прблема в данной проге - после выполнения конструктора приходит 'Asess violation ... at module', все проверил, даже с пустым телом конструктора то же самое... Объект класса создается в другом юните, в uses которого модуль MyConfig прописан ....
DJones (2008-10-13 11:37:00) [9]ок, спасибо,понял!
Поросенок Винни-Пух (2008-10-13 11:34:00) [10]class function это то, что у еретиков называется статиком
Поросенок Винни-Пух (2008-10-13 11:32:00) [11]сам-то подумай.
для вызова классового метода не нужен экземпляр.
и из какого именно экземпляра из сотни уже созданных он должен брать значение поля?
DJones (2008-10-13 11:32:00) [12]я на измене, я на измене
DJones (2008-10-13 11:25:00) [13]Разве метод КЛАССА не должен иметь доступа к private полям класса?
DJones (2008-10-13 11:19:00) [14]нет, я сишник, в паскале вообще не бумбум пока что(((
Ega23 (2008-10-13 11:13:00) [15]Чем
class functionот простоfunctionотличается - знаешь?
Сергей М. (2008-10-13 11:12:00) [16]Убери слово "class" из деклараций методов getReg и setReg
Поросенок Винни-Пух (2008-10-13 11:12:00) [17]методы класса не имеют доступа к любым полям этого класса. не только приватным
DJones (2008-10-13 11:11:00) [18]Помогите, пожалуйста, разобраться с этим примером!