PDA

Просмотр полной версии : Не могу присвоить 2-х мерномк массиву значения..


Kukoba
26.02.2006, 05:15
Ув. мастера.
простите за ламерство, но беда вот в чем:
есть функция

var getValues = function () {
// получаем значения компонентов
JobName = InputWindow.JobName_ti.text;
JobDateOut[0] = InputWindow.JobDateOut_dc.selectedDate.getDate();
JobDateOut[1] =InputWindow.JobDateOut_dc.selectedDate.getMonth()+1;
JobDateOut[2] = InputWindow.JobDateOut_dc.selectedDate.getFullYear();
JobType = InputWindow.JobType_cb.value;
JobStatus = "new";
JobAdder = InputWindow.JobAdder_cb.value;
JobMaster = InputWindow.JobMaster_cb.value;
JobDescr = InputWindow.JobDescr_ta.text;
JobChrono = InputWindow.JobChrono_ns.value;
// и пhttp://www.flasher.ru/forum/attachment.php?attachmentid=13303&stc=1
jober-test.rarытаемся занести это в массив (JobID меняеццо динамически и сейчас //равна 0)
JobDB[JobID][0] = JobName;
JobDB[JobID][1] = JobDateOut;
JobDB[JobID][2] = JobType;
JobDB[JobID][3] = JobStatus;
JobDB[JobID][4] = JobAdder;
JobDB[JobID][5] = JobMaster;
JobDB[JobID][6] = JobDescr;
JobDB[JobID][7] = JobChrono;
JobDB[JobID][8] = JobID;

};

дело в том. что в двух мерный массив JobDB не записываются значения переменных.., пробовал по другому:

var getValues = function () {
// получаем значения компонентов
JobName = InputWindow.JobName_ti.text;
JobDateOut[0] = InputWindow.JobDateOut_dc.selectedDate.getDate();
JobDateOut[1] =InputWindow.JobDateOut_dc.selectedDate.getMonth()+1;
JobDateOut[2] = InputWindow.JobDateOut_dc.selectedDate.getFullYear();
JobType = InputWindow.JobType_cb.value;
JobStatus = "new";
JobAdder = InputWindow.JobAdder_cb.value;
JobMaster = InputWindow.JobMaster_cb.value;
JobDescr = InputWindow.JobDescr_ta.text;
JobChrono = InputWindow.JobChrono_ns.value;
// и пытаемся занести это в массив (JobID меняеццо динамически и сейчас //равна 0)
Job[0] = JobName;
Job[1] = JobDateOut;
Job[2] = JobType;
Job[3] = JobStatus;
Job[4] = JobAdder;
Job[5] = JobMaster;
Job[6] = JobDescr;
Job[7] = JobChrono;
Job[8] = JobID;
JobDB[JobID] = Job;

};

так работает, но только при следующем инкрименировании JobID и перезаписи элементов массива Job, в массиве JobDB все предыдущие элементы меняюццо на последний.

вот трейс(trace(JobDB)):

JobID=0 Название работы 1,26,2,2006,промо,new,Люда Березовская,Борис Кукоба,Описание работы 1,3,0

JobID=1 Название работы 2,27,2,2006,реклама ID,new,Ира Терехова,Юра Койниченко,Описание работы 2,7,1,Название работы 2,27,2,2006,реклама ID,new,Ира Терехова,Юра Койниченко,Описание работы 2,7,1

JobID=2 Название работы 3,28,2,2006,диктор,new,Иван Жилинский,---вокансия---,Описание работы 3,14,2,Название работы 3,28,2,2006,диктор,new,Иван Жилинский,---вокансия---,Описание работы 3,14,2,Название работы 3,28,2,2006,диктор,new,Иван Жилинский,---вокансия---,Описание работы 3,14,2


млин, тупняк какойто бьюсь уже 2 дня.
Я так понимаю, что самый нормальный способ это сразу записывать в двухмерный массив. Но он почему-то не записываеццо....;-((

На всякий случай выкладываю сорс

breez38
26.02.2006, 05:38
Если внимательно читать help, то можно заметить, что массив создается след. образом:
var JobDB:Array = new Array();
AS2 не поддерживает двумерные массивы, но никто нам не мешает сделать массив массивов, например:
var JobDB:Array = new Array();
for (var i:Number = 0; i < 10; i++)
{
JobDB[i] = new Array();
JobDB[i][0] = "Петя";
JobDB[i][1] = "Вася";
// и так далее
}

И если мне не изменяет память тема двумерных массивов уже обсуждалась не один раз.

Kukoba
26.02.2006, 20:06
Если внимательно читать help, то можно заметить, что массив создается след. образом:
var JobDB:Array = new Array();



Это и так автоматически подразумевается. Только чуть по другому
JobDB = new Array ();

AS2 не поддерживает двумерные массивы, но никто нам не мешает сделать массив массивов, например:
var JobDB:Array = new Array();
for (var i:Number = 0; i < 10; i++)
{
JobDB[i] = new Array();
JobDB[i][0] = "Петя";
JobDB[i][1] = "Вася";
// и так далее
}

В данном случае 2-ух мерный массив и массив массивов - это одно и тоже,
А вот код

JobDB[i][0] = "Петя";
JobDB[i][1] = "Вася";

у меня как раз и не работает.

K.A.T.A.F.A.L.K.E.R
26.02.2006, 21:11
ИМХО не хватает в коде
JobDB[JobID] = new Array();, а дальше уже
JobDB[JobID][0]=... и вперед...

З.Ы. А нельзя было как-то описание проблемы сократить? Мне вера не позволяет столько читать :rolleyes: