![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ошибка при присваивании значения переменной класса
Dmitry © (2008-04-16 21:11:00)Помогите разобрать почему возникает ошибка при присваивании переменной класса (F: Boolean) какого-либо значения (Project Test.exe raised exception class EAccessViolation with message 'Access violation at address 004FD000 in module 'Test.exe').
Вот код:
unit NieL_Tree;
interface
uses
SysUtils, Classes, anvil_Nodes, anvil_Objs, StdCtrls;
type
TNieL_Tree = class(TObject)
private
B: Boolean;
public
procedure LLastConf(
FileName: String; Ctrl: Tanvil_TreeView);
end;
implementation
{ TNieL_Tree }
procedure TNieL_Tree.LLastConf(FileName: String; Ctrl: Tanvil_TreeView);
var
L: TIntegerList;
F: TFileStream;
Cur: TTreeItem;
i: Integer;
begin
B := True { ОШИБКА ПОЯВЛЯЕТСЯ ЗДЕСЬ }
if FileExists(FileName) then
begin
F := TFileStream.Create(FileName, fmOpenRead);
try
if F.Size > 0 then
begin
L := TIntegerList.Create;
try
L.Read(F);
Cur := Ctrl.Items[0];
repeat
Cur := Cur.Next;
for i := 0 to L.Count - 1 do
if Cur.Tag = L[i] then
begin
Cur.CheckState := cbChecked;
if Cur.CheckState <> Cur.Parent.CheckState then
ClickItem(Ctrl, Cur);
end;
until
Cur = Ctrl.Items.GetLast;
finally
L.Free;
end;
end else
DefaultItemChecked(
Ctrl, cbChecked);
finally
F.Free;
end;
end else
DefaultItemChecked(
Ctrl, cbChecked);
end;
ЮЮ (2008-04-17 05:28:00) [1]> На мой взгляд эта ошибка должна бы была появиться гораздо
> раньше.
Куда уж раньше то?
при таком использовании
TNieL_Tree.LLastConf('a.txt', Anvil_TreeView1);
именно таи и появится, ибо B - не преременная класса, а приватное поле экземпляра класса, а экземпляр не создан.
Германн (2008-04-17 00:28:00) [2]
> Сергей М, (16.04.08 22:03) [8]
>
> А барином, как прозорливо протелепатил ув. LT, вполне вероятно
> может оказаться и Пушкин)
>
Вполне. Вот только каким образом
> B := True { ОШИБКА ПОЯВЛЯЕТСЯ ЗДЕСЬ }
автор это узнал? На мой взгляд эта ошибка должна бы была появиться гораздо раньше.
Сергей М, (2008-04-16 22:03:00) [3]А барином, как прозорливо протелепатил ув. LT, вполне вероятно может оказаться и Пушкин)
Сергей М, (2008-04-16 22:00:00) [4]Вот приедет барин - барин нас покурит)
Palladin (2008-04-16 21:54:00) [5]
>Сергей М, (16.04.08 21:39) [4]
а ить верно :)
экран маленький, сразу все не углядеть...
Германн (2008-04-16 21:43:00) [6]
> Ты вчитайся в траву-то эту
Предупреждать заранее надо, что это вредно для здоровья.
Сергей М, (2008-04-16 21:39:00) [7]
> почему сразу это растение
Ну как почему ?
Ты вчитайся в траву-то эту - в вопросе F:Boolean, а в тексте комментарий об ошибке стоит в строчке, где оной и не пахнет, зато курится совсем другая переменная - B:Boolean
))
Palladin (2008-04-16 21:26:00) [8]да почему сразу это растение :) камрад овощь просто не создал объект :)
там еще и точки с запятой нет...
Leonid Troyanovsky (2008-04-16 21:24:00) [9]
> Dmitry (16.04.08 21:11)
> Помогите разобрать почему возникает ошибка при присваивании
> переменной класса
Создавать экземпляр оного класса будет Пушкин?
--
Regards, LVT.
Сергей М, (2008-04-16 21:13:00) [10]
> переменной класса ( F
> B:= True { ОШИБКА ПОЯВЛЯЕТСЯ ЗДЕСЬ }
Хня какая-то)...