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,цикл естественно вылетает,подскажите пожалуйста как с эти боротся.
Заранее все спасибо.


Andrick   (2004-08-09 07:15:00) [21]

Для отброса неинициализированных значений можно использовать
if Assigned (ArrayData[t,i]) then
{работа с данными}


Sergey Kaminski   (2004-08-09 07:14:00) [22]

>>  if ArrayDataTemp[j,i]

память для елемента [j,i] еще не выделена?
а что мешает сразу выделить для всего массива?


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

Поверь мне наслово,я себя обманывать не буду


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

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


Faeton08   (2004-08-09 07:10:00) [25]

а вот так я пытался масив подровнять
  for i:=0 to  CountM-1 do
     for j:=1  to countSQLMAS-1  do
     begin
       if ArrayDataTemp[j,i]=null then
       begin
         ArrayDataTemp[j,i]:='-';

       end;
     end;


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

Вот и я о том же


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

упс


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

кода дай.

например, как выделяешь память для массива.


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

Ну ладно сами напросились :)
 CountM:=0;
   for i:= 0  to countFieldR-1  do
   begin

     if ArrayData[0,i]<>Trim(FieldLinkKod2) then
     begin
       if  bolSlave = false then
       begin
         CountM := CountM +1;
         setlength(ArrayDataTemp,countSQLMAS,CountM);

         for j:=0 to  countSQLMAS-1  do
         begin
           ArrayDataTemp[j,CountM-1]:=ArrayData[j,i];
         end;
       end
       else
       begin
         bolSlave := false;
       end;

     end
     else
     begin
       CountM := CountM +1;
       setlength(ArrayDataTemp,countSQLMAS,CountM);

       for j:=0 to  countFieldR-1  do
       begin
         if ArrayData[0,j]= Trim(FieldLinkKod1) then MasterFiled:=j;
       end;

       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;
        bolSlave := true;
      end;
    end;


Faeton08   (2004-08-09 07:05:00) [30]

Да в том то и приком что мне нужно масси подравнять,а не инициалезированные ячейки,инициализировать и заполнить их например '-'.


Sergey Kaminski   (2004-08-09 07:03:00) [31]

>> массив не равномерный тобиш,1..2,2...5,3..17,4..n,n.
тобишь?

>> не инициалезированные ячейки обозначаются как Unassigned
то есть?

>> цикл естественно вылетает
естественно?

>> как с эти боротся.
привести немножко кода :)


TUser   (2004-08-09 07:01:00) [32]

Обращайся к тем ячейкам, которые у тебя есть. Например так
for i:=0 to length(Ar)-1 do
  for j:=0 to length(Ar[i])-1 do
     {bla bla bla}
А вообще в таких вопросах - лучше приводить свой код.


kos   (2004-08-09 06:55:00) [33]

Удалено модератором


Страницы:   1 2

Наверх

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