![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Динамические массивы [D6]
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]код давай.