??? I need to set about 64 elements in an array , but my patch have nearly 25% of cpu load ! I really can't use it but I need it ! :/
have you got another solution? Is there a script that might do the job?
Thanks.
It is currently 12 May 2026, 00:48
Unread post by moody33 » 28 Feb 2011, 21:30
??? Unread post by bsork » 28 Feb 2011, 21:45
Unread post by moody33 » 28 Feb 2011, 22:08
Unread post by bsork » 28 Feb 2011, 22:43
Unread post by moody33 » 28 Feb 2011, 23:33
Unread post by 23fx23 » 01 Mar 2011, 00:59
Code: Select all
//////////////////////////
// SetEach+IndexStart
/////////////////////////
var ArrayIN, ArrayOUT : tparameter;
var GoSet : tparameter;
var Index, valin : tparameter;
var SubSize: tparameter;
var i, l : integer;
////////////////////////
procedure init;
begin
ArrayIn:= createParam('Array in', PtArray); setisOutput(Arrayin,false);
goset := createParam('set values', Ptbutton); setisOutput(goset,false);
index := createParam('index (offset)', Ptdatafader); setisOutput(index,false);
SetFormat(index,'%.0f'); SetMax(index,512);
SubSize:= createParam('each (subsize)', Ptdatafader); setisOutput(subsize,false);
SetFormat(subsize,'%.0f'); SetMax(subsize,512); setMin(subsize,1); setValue(subsize,1);
valin := createParam('value', Ptdatafader); setisOutput(valin,false);
SetFormat(valin,'%.0f'); SetMax(valin,255);
ArrayOut:= createParam('Array out', PtArray); setisINput(ArrayOut,false);
setLength(ArrayOut,0);
end;
/////////////////////////////////////
Procedure Callback(N:integer);
var NB_OF_SUBS, ID : integer;
begin
if (n=ArrayIn) then IN_TO_OUT;
if (n=GoSet) and (getValue(GoSet)=1) then begin
IN_TO_OUT;
NB_OF_SUBS:= L div round(getvalue(subsize));
for i:= 0 to NB_OF_SUBS do begin
ID:= round(getvalue(index)+(i*getvalue(subsize)));
if ID <= L-1 then begin
setDataArrayValue(ArrayOut,ID,getValue(valin));
end;
end;
end;
end;
///////////////
procedure IN_TO_OUT;
begin
L:= getlength(arrayin);
setlength(arrayOut,L);
for i:= 0 to L-1 do begin
setDataArrayValue(ArrayOut,i,getDataArrayValue(ArrayIn,i));
end;
end;
//////////////////////////////Unread post by bsork » 01 Mar 2011, 08:29
Unread post by moody33 » 01 Mar 2011, 11:17
Unread post by 23fx23 » 01 Mar 2011, 11:46
Unread post by bsork » 01 Mar 2011, 12:03
Unread post by moody33 » 01 Mar 2011, 17:22
Unread post by 23fx23 » 01 Mar 2011, 19:08
Unread post by 23fx23 » 01 Mar 2011, 19:28
Code: Select all
//////////////////////////
// SetEach+IndexStart_array of values in
/////////////////////////
var ArrayIN, ArrayOUT, ValuesIn : tparameter;
var GoSet : tparameter;
var Index, valin : tparameter;
var SubSize: tparameter;
var i, l : integer;
////////////////////////
procedure init;
begin
ArrayIn:= createParam('Array in', PtArray); setisOutput(Arrayin,false);
goset := createParam('set values', Ptbutton); setisOutput(goset,false);
index := createParam('index (offset)', Ptdatafader); setisOutput(index,false);
SetFormat(index,'%.0f'); SetMax(index,511);
SubSize:= createParam('each (subsize)', Ptdatafader); setisOutput(subsize,false);
SetFormat(subsize,'%.0f'); SetMax(subsize,511); setMin(subsize,1); setValue(subsize,1);
//valin := createParam('value', Ptdatafader); setisOutput(valin,false);
//SetFormat(valin,'%.0f'); SetMax(valin,255);
ValuesIn:= createParam('Values in', PtArray); setisOutput(ValuesIn,false);
ArrayOut:= createParam('Array out', PtArray); setisINput(ArrayOut,false);
setLength(ArrayOut,0);
end;
/////////////////////////////////////
Procedure Callback(N:integer);
var NB_OF_SUBS, ID : integer;
begin
if (n=ArrayIn) then IN_TO_OUT;
if (n=GoSet) and (getValue(GoSet)=1) then begin
IN_TO_OUT;
NB_OF_SUBS:= L div round(getvalue(subsize));
for i:= 0 to NB_OF_SUBS-1 do begin
ID:= round(getvalue(index)+(i*getvalue(subsize)));
if ID <= (MinI(L,getLength(ValuesIn))-1) then begin
setDataArrayValue(ArrayOut,ID,getdataArrayValue(valuesin,i));
end;
end;
end;
end;
///////////////
procedure IN_TO_OUT;
begin
L:= getlength(arrayin);
setlength(arrayOut,L);
for i:= 0 to L-1 do begin
setDataArrayValue(ArrayOut,i,getDataArrayValue(ArrayIn,i));
end;
end;
//////////////////////////////Unread post by moody33 » 01 Mar 2011, 19:38
Unread post by moody33 » 01 Mar 2011, 19:38
Unread post by moody33 » 01 Mar 2011, 20:09
Unread post by waolelaid » 01 Mar 2011, 21:37
Unread post by nay-seven » 01 Mar 2011, 22:03
Unread post by 23fx23 » 01 Mar 2011, 22:31
Code: Select all
///////////////////////////////////////////////////////////////
// Get/Set Each(n) + IndexStart from/to array of values in/out
/////////////////////////////////////////////////////////////
var ArrayIN, ArrayOUT, ValuesIn, valuesOut, Mode : tparameter;
var GoSet : tparameter;
var Index : tparameter;
var SubSize: tparameter;
var ValTMP: integer;
var i, l : integer;
var NB_OF_SUBS, ID, pass, lvals : integer;
////////////////////////
procedure init;
begin
ArrayIn:= createParam('Array in', PtArray); setisOutput(Arrayin,false);
goset := createParam('Process', Ptbutton); setisOutput(goset,false);
index := createParam('index (offset)', Ptdatafader); setisOutput(index,false);
SetFormat(index,'%.0f'); SetMax(index,511);
SubSize:= createParam('each (subsize)', Ptdatafader); setisOutput(subsize,false);
SetFormat(subsize,'%.0f'); SetMax(subsize,511); setMin(subsize,1); setValue(subsize,1);
Mode := createParam('mode', PtListBox); setisOutput(Mode,false);
SetListBoxString(Mode, '"Set only", "Set+Extract", "Extract only"');
setvalue(mode,0);
ValuesIn:= createParam('Values in', PtArray); setisOutput(ValuesIn,false);
ArrayOut:= createParam('Array out', PtArray); setisINput(ArrayOut,false);
ValuesOut:= createParam('Values out', PtArray); setisINput(ValuesOut,false);
setLength(ArrayOut,0);
end;
/////////////////////////////////////
Procedure Callback(N:integer);
begin
if (n=ArrayIn) then IN_TO_OUT;
if (n=GoSet) and (getValue(GoSet)=1) then begin
IN_TO_OUT;
if getvalue(mode)<2 then INSERT_VALUES;
if getvalue(mode)>0 then EXTRACT_VALUES;
end;
end;
//////////////////////////////////////////
procedure EXTRACT_VALUES;
begin
NB_OF_SUBS:= L div round(getvalue(subsize));
setlength(ValuesOut,NB_OF_SUBS);
for i:= 0 to NB_OF_SUBS-1 do begin
ID:= round(getvalue(index)+(i*getvalue(subsize)));
if (ID < L) then begin
ValTMP:= round(getdataArrayValue(Arrayout,id));
setDataArrayValue(ValuesOut,i,ValTMP);
end else begin
setDataArrayValue(ValuesOut,i,0);
end;
end;
end;
////////////////////////
procedure INSERT_VALUES;
begin
for i:= 0 to Lvals-1 do begin
ID:= round(getvalue(index)+(i*getvalue(subsize)));
if ID < L then begin
ValTMP:= round(getdataArrayValue(valuesin,i));
setDataArrayValue(ArrayOut,ID,VALTMP);
end;
end;
end;
///////////////
procedure IN_TO_OUT;
begin
L:= getlength(arrayin);
Lvals:= getLength(ValuesIn);
setlength(arrayOut,L);
for i:= 0 to L-1 do begin
setDataArrayValue(ArrayOut,i,getDataArrayValue(ArrayIn,i));
end;
end;
//////////////////////////////Unread post by moody33 » 01 Mar 2011, 23:14
Return to “Patching questions”
Users browsing this forum: No registered users and 29 guests