Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.005 c
3-42704
IVL
2002-01-22 23:43
2002.02.14
Компоненты Interbase


3-42688
Ars P
2002-01-22 13:04
2002.02.14
Создаю алиас в SQL Explorer-е для базы interbase, расположенной на сервере...


14-42845
Hawk2
2001-12-25 18:04
2002.02.14
---|Ветка была без названия|---


1-42803
Dreamer
2002-01-31 20:04
2002.02.14
Как график плавным сделать?


1-42739
Alex
2002-01-30 21:48
2002.02.14
Вопрос:





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский