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

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

Динамические массивы [D6]


Страницы:   1 2

Faeton08 ©   (2004-08-09 06:45:00) 

Уважаемые знатоки,у меня возникла следующия проблема.
Есть динамический двухмерный массив ,внего заносятся определённые данные,массив не равномерный тобиш,1..2,2...5,3..17,4..n,n..n,проблема в том что когда я начинаю прогонять его в цикле на проверку данных,не инициалезированные ячейки обозначаются как Unassigned,цикл естественно вылетает,подскажите пожалуйста как с эти боротся.
Заранее все спасибо.


Rutven   (2004-08-09 15:25:00) [1]

Indicates whether the specified variant is unassigned.

Unit

Variants

Category

Variant support routines

function VarIsEmpty(const V: Variant): Boolean;

Description

VarIsEmpty returns True if the given variant contains the value Unassigned. If the variant contains any other value, the function result is False.


KSergey   (2004-08-09 10:34:00) [2]

А зачем выкладывать весь код??
Вы сделайте модельный пример, минимальный, на котором проблема будет видна.

Тогда и приводите его.
А разбираться во всем нагромождении кучи кода, тем более, что дело не в недопонимании каких-то общих моментов, а просто в банальных ошибках реализации - это через кассу, уж извините ;)


Faeton08   (2004-08-09 09:51:00) [3]

ребят это просто кусок кода,если я все выложу боюсь места не хватит,а приведенный код это сортировка выборки данных из базы данных,а програмулина универсальный построитель отчёто для Lotus Domino,но всеровно несмотря на критеку спасибо


Sergey Kaminski   (2004-08-09 08:19:00) [4]

надеюсь, я все-таки правильно УГАДАЛ проблему?

П.С. KSergey прав на 100%.


Sergey Kaminski   (2004-08-09 08:16:00) [5]

С ЭТОГО И СТОИЛО НАЧАТЬ.

Проверку можно произвести вот так:

 if VarType(A[I]) and varTypeMask = varEmpty then
   A[I] := '-';

где Aесть array of Variant;

Но можно этого избежать, если ПЕРЕД заполнением массива, пройтись в цикле и всем ячейкам присвоить какое-нибудь значение, хотя бы и '-'. И не нужно тогда ничего проверять


KSergey   (2004-08-09 08:05:00) [6]

> [5] Faeton08 ©   (09.08.04 07:07)

А может вместо писания сюда сесть и хорошенько обмозговать код и подход к проблеме?
Тут куча каких-то переменных, которые фиг знает чему равны, приведеный код начинается с бухты-барахты (if ArrayData[0,i]<>Trim(FieldLinkKod2) - а выделение памяти под элементы где произошло??)

Боюсь, что могут только посмеяться.
Комп - в сторону
Ручку, бумажку - в зубы - и вперед. Выполнять программу за комп, выписывая значения переменных на данный момент - проблдема и решиться, уверяю!
А разбираться в этом бреде, где просто явные есть простейшие ошибки - не стыдно на форум? Ничего умного тут нет, надо просто немного аккуратно поработать - вот и все.

PS
Что думал - то и написал.


Faeton08   (2004-08-09 07:55:00) [7]

ArrayDataTemp :array of array of Variant;


Sergey Kaminski   (2004-08-09 07:53:00) [8]

массив как определен?


Faeton08   (2004-08-09 07:49:00) [9]

тыкаю :)
 for j:=0 to countSQLMAS-1  do
      begin
        for t:=0 to countSQLMAS-1 do
        begin
           if ArrayData[t,i]=ArrayData[j,MasterFiled] then
           ArrayDataTemp[j,CountM-1]:=ArrayData[t,i+1];
        end;
      end;


Sergey Kaminski   (2004-08-09 07:45:00) [10]


просто некоторые ячейки не заполняются данными в процессе заполнения,и обозначаются как Unassigned

Сделай одолжение — ткни меня носом в то место, где это делается.


Faeton08   (2004-08-09 07:42:00) [11]

Anatoly Podgoretsky выше код заполнения ArrayDataTemp это динамический массив


Faeton08   (2004-08-09 07:38:00) [12]

Да память для него выделенна,я проста не так выразился,просто некоторые ячейки не заполняются данными в процессе заполнения,и обозначаются как Unassigned вот к ним то и не добратся


Anatoly Podgoretsky   (2004-08-09 07:36:00) [13]

Код давай


Andrick   (2004-08-09 07:30:00) [14]

Попробуй if Assigned (ArrayData[t,i]^), иначе давай определение массива


Sergey Kaminski   (2004-08-09 07:28:00) [15]

Выдели память сразу для всего массива  и не будет неинициализированнных
SetLength(NArray,Max1,Max)


Faeton08   (2004-08-09 07:21:00) [16]

Матирится он на if Assigned (ArrayData[t,i]) then
говорит Incompatible types


Sergey Kaminski   (2004-08-09 07:18:00) [17]

Наверное, выход за границы массива или я чего0то не понимаю.


Думкин   (2004-08-09 07:17:00) [18]

Ой, я тут уснул - и поздно запостил, звиняюсь.


Faeton08   (2004-08-09 07:17:00) [19]

Спасибо ,сейчас попробую


Думкин   (2004-08-09 07:16:00) [20]

код давай.


Страницы:   1 2

Наверх

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