Текущий архив: 2006.05.07;
Скачать: CL | DM;
ВнизДинамические массивы типа запись Найти похожие ветки
← →
User_OKA (2006-04-15 19:27) [0]Мастера зацените, похоже перемудрил.
Три динамических массива типа запись, причем в одной записе тоже есть динамический массив.
Загибается прога если выставить максимальные значения.
mCPU - 0..9
PassByOZU - 0..9
mOZU - 0..9
mTask - 0..19
rCPU = record
Number : Byte;
IndOZU : Byte;
PassByOZU : array of Byte;
TimeConflict, TimeWork, FaktorLoading, NumberConflict : Byte;
tNumber, tTimeCPU, tTimeOZU : Byte;
end;
rOZU = record
Number : Byte;
CPU : Integer;
tTimeOZU : Integer;
end;
rTask = record
Number, TimeCPU, TimeOZU : Byte;
end;
mCPU = array of rCPU;
mOZU = array of rOZU;
mTask = array of rTask;
Какие будут предложения?
← →
Anatoly Podgoretsky © (2006-04-15 19:57) [1]Не выставляй максимальные
← →
Гаврила © (2006-04-15 20:08) [2]Покажи, как, и главное - куда, ты выставляешь максимальные значения, и каким именно образом валится при этом прога
← →
TUser © (2006-04-16 05:50) [3]
> Загибается прога если выставить максимальные значения.
Наверняка, не учел, что элементы динамического массива нумеруются с нуля. А следовательно в массиве из 10 элементов, максимальный индекс - 9.
← →
tesseract © (2006-04-16 08:15) [4]рекомендую записи всё-же объявить packed.
← →
User_OKA (2006-04-16 08:21) [5]Вот здесь накрывается. Может накрыться при разных размерах массива
pCPU (0..6;0..7;....0..9)
При маленьких значениях все нормально (0..1;....0..5)
procedure TMainForm.CPURecordData(pCPU : mCPU);
var
CountCPU, CountOZU, number : Byte;
temp : String;
begin
for CountCPU:=0 to High(pCPU) do
if High(CPU[CountCPU].PassByOZU) >= 0 then
for CountOZU:=0 to High(CPU[CountCPU].PassByOZU) do
CPU[CountCPU].PassByOZU[CountOZU]:=0;
for CountCPU:=0 to High(pCPU) do begin
CPU[CountCPU].Number:=CountCPU + 1;
temp:=Trim(SettingForm.CPU_OZUValueListEditor.Cells[1,CountCPU + 1]);
if SettingForm.CPU_OZURadioGroup.ItemIndex = 0 then
SetLength(CPU[CountCPU].PassByOZU,1)
else
SetLength(CPU[CountCPU].PassByOZU,High(pCPU)+1);
for CountOZU:=0 to High(pCPU) do
if SettingForm.CPU_OZURadioGroup.ItemIndex = 0 then
CPU[CountCPU].PassByOZU[CountOZU]:=CountCPU+1
else begin
number:=pos(" ",temp);
if number > 0 then begin
CPU[CountCPU].PassByOZU[CountOZU]:=StrToInt(copy(temp,1,number-1));
delete(temp,1,number);
end
else
CPU[CountCPU].PassByOZU[CountOZU]:=StrToInt(temp);
end;
CPU[CountCPU].TimeConflict:=0;
CPU[CountCPU].TimeWork:=0;
CPU[CountCPU].FaktorLoading:=0;
CPU[CountCPU].NumberConflict:=0;
end;
end;
← →
tesseract © (2006-04-16 09:02) [6]
> for CountCPU:=0 to High(pCPU) do
попробуй For CountCPU:0 to length(pCpu)-1 do
← →
User_OKA (2006-04-16 10:09) [7]а в чем разница между High(pCPU) и length(pCpu)-1 помоему одно и то же.
я пришел к выводу, что прога накрывается из-за динамического массива, который расположен в одной из записей, токо почему она накрывается понять не могуprocedure TMainForm.CPURecordData(pCPU : mCPU);
var
CountCPU, CountOZU, number : Byte;
temp : String;
begin
for CountCPU:=0 to High(pCPU) do
if High(CPU[CountCPU].PassByOZU) >= 0 then
for CountOZU:=0 to High(CPU[CountCPU].PassByOZU) do
CPU[CountCPU].PassByOZU[CountOZU]:=0;
for CountCPU:=0 to High(pCPU) do begin
CPU[CountCPU].Number:=CountCPU + 1;
temp:=Trim(SettingForm.CPU_OZUValueListEditor.Cells[1,CountCPU + 1]);
if SettingForm.CPU_OZURadioGroup.ItemIndex = 0 then
SetLength(CPU[CountCPU].PassByOZU,1)
else
SetLength(CPU[CountCPU].PassByOZU,High(pCPU)+1);
for CountOZU:=0 to High(pCPU) do
if SettingForm.CPU_OZURadioGroup.ItemIndex = 0 then
CPU[CountCPU].PassByOZU[CountOZU]:=CountCPU+1
else begin
number:=pos(" ",temp);
if number > 0 then begin
CPU[CountCPU].PassByOZU[CountOZU]:=StrToInt(copy(temp,1,number-1));
delete(temp,1,number);
end
else
CPU[CountCPU].PassByOZU[CountOZU]:=StrToInt(temp);
end; CPU[CountCPU].TimeConflict:=0;
CPU[CountCPU].TimeWork:=0;
CPU[CountCPU].FaktorLoading:=0;
CPU[CountCPU].NumberConflict:=0;
end;
end;
← →
Virgo_Style © (2006-04-16 11:31) [8]Код даже не компилируется, описания переменных сплошь и рядом не преведены, понятия "валится" и "накрывается" не раскрыты.
Ни-ти-во не понимаю (с)
← →
User_OKA (2006-04-16 12:25) [9]Конечно не будет компилироваться, я же привел фрагмент кода программы,.
В шапке написано, что объявлено три динамических массива типа запись и там же пример их объявления.
← →
Virgo_Style © (2006-04-16 14:22) [10]User_OKA (16.04.06 12:25) [9]
я же привел фрагмент кода программы,.
А я, ясное дело, буду восстанавливать его до полного посредством телепатора и чьей-то матери? Или прикажете по исходному тексту гадать, что у вас там и где выдается?
Тогда озвучивайте сумму. Батарейки для телепатора - тоже за ваш счет.
← →
User_OKA (2006-04-16 14:34) [11]проще тогда будет тебе исходники проги выслать, чтоб ты не мучился
← →
Virgo_Style © (2006-04-16 15:01) [12]Вы знаете, я не то что бы не мучаюсь, а просто счастлив в своем неведеньи)))
Оно, неведенье, мешает мне только в одном - ответить на ваш вопрос. Но это же не мне надо, правда?
Удачи.
← →
Anatoly Podgoretsky © (2006-04-16 16:30) [13]User_OKA (16.04.06 14:34) [11]
Можно и исходники, но тогда это уже саппорт со всеми вытекающими.
← →
Старик (2006-04-17 07:53) [14]Еще ни разу не пользовался саппортом на этом сайте, да и вообще никогда им не пользовался, но хотелось бы знать:
1. А что он в себя включает? В вашем понимании
2. А какие такие у саппорта вытекающие? Исходники? Денежки?
Страницы: 1 вся ветка
Текущий архив: 2006.05.07;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.011 c