Главная страница
    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.003 c
14-42864
Wonder
2001-12-25 11:36
2002.02.14
Merlin! Что же это такое началось?!


4-42899
Вовка
2001-12-16 21:37
2002.02.14
WinAPI


7-42883
Александр А.
2001-11-05 14:59
2002.02.14
Объясните, кто ХОРОШО рассекает, разницу в


1-42795
Tomvitas
2002-01-30 23:47
2002.02.14
Как в TStringGrid програмно перенести Selection с одной строки в другую?


14-42853
zero
2001-12-26 11:59
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский