Форум: "Основная";
Текущий архив: 2002.02.14;
Скачать: [xml.tar.bz2];
Внизработа с объектами в TStringList Найти похожие ветки
← →
perov (2002-01-30 09:48) [0]имеются следующие описания классов
type
tclass1 = class
f1: string;
f2: integer;
f3: pointer;
end;
tclass2=class
private
fpos: integer;
flist: tstringlist;
.....
procedure insert(a1: string; a2: integer; a3: pointer);
.....
end;
procedure tclass2.insert(a1: string; a2: integer; a3: pointer);
var
a: TClass1;
begin
a:=tclass1.create;
a.f1:=a1;
a.f2:=a2;
a.f3:=a3;
flist.items.addobject(a1, a);
end;
с этим методом проблем нет
проблема возникает в следующем коде:
var
i: integer;
s: string;
a: tclass1;
a1: string;
a2: integer;
a3: pointer;
begin
// на этом этапе значение fpos больше нуля, к примеру 10
s := ......;
i := flist.indexof(s);
if <> -1 then begin
a := flist.objects[i] as tcalss1;
a1 := a.a1; // вот тут идет глюк
a2 := a.a2; // операторы выполняются правильно, значения те, что заносил в список,
a3 := a.a3; // но при этом обнуляется значение fpos
end;
end;
из-за чего может менятся значение поля fpos??????
← →
Digitman (2002-01-30 10:29) [1]а где у тебя в проблемном коде используется поле fpos ? из кода это не очевидно.
и как ты контролируешь его значение ?
← →
perov (2002-01-30 10:38) [2]значение fpos используется в другом месте, а обнаружил в отладчике при пошаговом выполнении.
в переменную a3 записывается адрес метода, который затем вызывается (без проблем) и в этом методе уже и используется fpos
← →
AlexSV (2002-01-30 10:42) [3]> perov
Не совсем понятно несколько моментов:
1. if <> -1 then begin
- что проверяем?
2. a := flist.objects[i] as tcalss1;
a1 := a.a1; // вот тут идет глюк
- согласно объявлению tcalss1 не имеет свойств аX
tclass1 = class
f1: string;
f2: integer;
f3: pointer;
end;
← →
perov (2002-01-30 10:51) [4]>AlexSV
извиняюсь, штопор мозгов
if i<> -1 then begin
a := flist.objects[i] as tcalss1;
a1 := a.f1; // вот тут идет глюк
a2 := a.f2; // операторы выполняются правильно, значения те, что заносил в список,
a3 := a.f3; // но при этом обнуляется значение fpos
end;
← →
AlexSV (2002-01-30 11:12) [5]В приведенном коде все прозрачно, так что ошибка возможно не здесь.
Если что, то пиши не email, попробую помочь. (отключаюсь до завтра, увы).
← →
perov (2002-01-30 11:19) [6]но отладчик считает иначе, потому что именно на строчке a1 := a.f1 (вернее после её выполнения) обнуляется fpos
← →
Digitman (2002-01-30 11:19) [7]проблемный код - это некий метод класса TClass2, надо понимать ?
приведи его полную реализацию и фрагмент кода его вызова откуда-то
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.02.14;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.004 c