Главная страница
    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.004 c
14-42861
fliz
2001-12-26 17:36
2002.02.14
Есть ли какие-то ключи(настройки),предписвыающие Дельфи6 компилить под Вин2000 ?


1-42755
Василий Свиридов
2002-01-31 03:20
2002.02.14
Этот вопрос скорее всего уже всплывал....


4-42897
vivus
2001-12-18 10:47
2002.02.14
виндовая мессага.


1-42761
vopros
2002-01-31 09:42
2002.02.14
Как запустить из Delphi DOS комманду?


14-42829
навичек
2001-12-24 04:22
2002.02.14
ADO Provider потеряся





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский