Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

"Тонкости" применения Variant [D6, WinXP]


DeepProg ©   (2005-06-15 17:32:00) 

Приложение консольное.
Вот процедура, которая работает некорректно:

type Waste = array of array of variant;
...
procedure MakeRep(wItems:Waste;WLength:integer;var report: string);
var i:integer;
begin
for i := 0 to WLength do report:=report+#10#13+ wItems[i,0];
end;

wItems[i,0] - это строка
Программа вылетает с ошибкой, когда я ее запускаю уже вне IDE.
(модно я дамп памяти приводить не буду?)
Если debug-ить по шагам в IDE, то почему-то пропускаются все 3 процедуры writeln (вывод двух строковых констант и, собственно, содержимого report), идущие после выполнения MakeRep, но зато выполняется последняя read. И при этом report заполнена правильно - watch позволяет ее увидеть.
Мне удобно использовать variant в Waste - второе поле integer, которое используется ранее.
Проблема явно с ним, но что я сделал не так или здесь особенности применения variant?


Anatoly Podgoretsky   (2005-06-24 14:56:00) [1]

DeepProg   (24.06.05 13:29) [11]
Не имеешь права.


DeepProg   (2005-06-24 13:29:00) [2]

see top
> wItems[i,0] - это строка
Ладно. Хватит препираться.
Тема закрыта.


ЮЮ   (2005-06-23 09:57:00) [3]

>аргументируй

Если переменная Variant, то в ней успешно может храниться и число.

И что в этом случае получишь на
 report := report+#10#13+ wItems[i,0] ?


DeepProg   (2005-06-22 14:54:00) [4]

Будем считать, что отгадали
Победа за [b]eevcom (с)[/b]
[i]>не забудь 1 отнять[/i]
2 [b]ЮЮ[/b]
[i]>Ошибки преобразования типов[/i]
аргументируй


evvcom   (2005-06-22 14:17:00) [5]


> Подсказка: ошибка Access Violation в этой процедуре.

Скорее Range Checking Error

> DeepProg
Зачем тебе WLength? Используй Length(wItems) и не забудь 1 отнять.


Anatoly Podgoretsky   (2005-06-22 10:03:00) [6]

DeepProg   (22.06.05 07:58) [3]
Ошибаешься видел


ЮЮ   (2005-06-22 10:00:00) [7]

>а зачем тебе вариант ? аргуменитируй ...

Чтобв не только AV получать, но и Ошибки преобразования типов :)


Rule   (2005-06-22 09:58:00) [8]

DeepProg   (15.06.05 17:32)
а зачем тебе вариант ? аргуменитируй ...


Rule   (2005-06-22 09:57:00) [9]

DeepProg   (22.06.05 7:58) [3]
помоему жестоковато ты отвечаешь, не дай бог чтоб ты чему то учился и вместо того чтоб тебе подсказать, на тебя так нападали ....


DeepProg   (2005-06-22 07:58:00) [10]

Модеры, sorry за flood, но пусть народ развлечется
Перенесите это в треп :)))
Хорошо, что Подгорецкий этого пока не видел
Угадайте почему программа приходит в последнюю точку пропуская несколько операторов после выполнения вышеозначенной процедуры?
Подсказка: ошибка Access Violation в этой процедуре.

ЗЫ Снимаю с себя ответсвенность за смерть некоторых товарищей от смеха
ЗЗЫ В итоге Variant оказался не нужен


Digitman   (2005-06-15 18:00:00) [11]


> особенности применения variant


variant он и в африке variant.
никаких особенностей.


ferr   (2005-06-15 17:37:00) [12]

Я не понял зачем Variant?


Наверх

Титульная страница Поиск, карта сайта Написать письмо