| |
|
|
Christian Schneider | Mit Sicherheit nicht der eleganteste Weg, aber vielleicht kann ja jemand etwas damit anfangen:
Der gesuchte Wert kann beliebig oft im Array vorkommen. Rückgabe über String-Array.
In folgendem Beispiel werden alle Vorkommen des Wertes 8 gesucht. KompilierenMarkierenSeparierenCLS
Declare Test&[1000,1000]
Declare Ergvar$[]
Test&[1,55]=8
Test&[102,354]=8
Test&[999,0]=8
Ergvar$[] = Indexof_2(Test&[],8) Syntax: Indexof_2(Array,gesuchter Wert) | Rückgabe in dyn. String-Array | Kein Fund = -1
Print Sizeof(Ergvar$[]);" Übereinstimmungen gefunden:
-------------------------------"
WhileLoop Sizeof(Ergvar$[])
Print &loop;": ";Ergvar$[&loop-1]
Endwhile
Whilenot %scankey=27
Endwhile
Proc Indexof_2
Declare Indexof_2_Typ1$,Indexof_2_Par&[1]
Declare Indexof_2_Temp&
Declare Indexof_2_Return$[],Indexof_2_Durchlauf&
Declare Indexof_2_Decimals&,Indexof_2_Pos&,Indexof_2_stop&
Indexof_2_Typ1$=@PType$(1)
Indexof_2_Par&[0] = val(substr$(@Mid$(Indexof_2_Typ1$,3,len(Indexof_2_Typ1$)-3),1,","))
Indexof_2_Par&[1] = val(substr$(@Mid$(Indexof_2_Typ1$,3,len(Indexof_2_Typ1$)-3),2,","))
Indexof_2_Decimals&=@Get("Decimals")
IF @Left$(Indexof_2_Typ1$,1)="&"
Parameters Indexof_2_Array&[]
Whilenot Indexof_2_stop&=1
Indexof_2_Temp& = IndexOf(Indexof_2_Array&[],@&(2),Indexof_2_Pos&)
@Set("Decimals",0)
Indexof_2_Pos&=Indexof_2_Temp&+1
IF Indexof_2_Temp&<0
Indexof_2_stop&=1
IF Sizeof(Indexof_2_Return$[])<1
Indexof_2_Return$[Indexof_2_Durchlauf&] = -1
EndIF
Else
Indexof_2_Return$[Indexof_2_Durchlauf&] = Indexof_2_Temp& - ((Indexof_2_Temp& (Indexof_2_Par&[0]+1))*(Indexof_2_Par&[0]+1));",";(Indexof_2_Temp& (Indexof_2_Par&[0]+1))
EndIF
Inc Indexof_2_Durchlauf&
@Set("Decimals",Indexof_2_Decimals&)
Endwhile
ElseIF @Left$(Indexof_2_Typ1$,1)="!"
Parameters Indexof_2_Array![]
Whilenot Indexof_2_stop&=1
Indexof_2_Temp& = IndexOf(Indexof_2_Array![],@!(2),Indexof_2_Pos&)
@Set("Decimals",0)
Indexof_2_Pos&=Indexof_2_Temp&+1
IF Indexof_2_Temp&<0
Indexof_2_stop&=1
IF Sizeof(Indexof_2_Return$[])<1
Indexof_2_Return$[Indexof_2_Durchlauf&] = -1
EndIF
Else
Indexof_2_Return$[Indexof_2_Durchlauf&] = Indexof_2_Temp& - ((Indexof_2_Temp& (Indexof_2_Par&[0]+1))*(Indexof_2_Par&[0]+1));",";(Indexof_2_Temp& (Indexof_2_Par&[0]+1))
EndIF
Inc Indexof_2_Durchlauf&
@Set("Decimals",Indexof_2_Decimals&)
Endwhile
ElseIF @Left$(Indexof_2_Typ1$,1)="$"
Parameters Indexof_2_Array$[]
Whilenot Indexof_2_stop&=1
Indexof_2_Temp& = IndexOf(Indexof_2_Array$[],@$(2),Indexof_2_Pos&)
@Set("Decimals",0)
Indexof_2_Pos&=Indexof_2_Temp&+1
IF Indexof_2_Temp&<0
Indexof_2_stop&=1
IF Sizeof(Indexof_2_Return$[])<1
Indexof_2_Return$[Indexof_2_Durchlauf&] = -1
EndIF
Else
Indexof_2_Return$[Indexof_2_Durchlauf&] = Indexof_2_Temp& - ((Indexof_2_Temp& (Indexof_2_Par&[0]+1))*(Indexof_2_Par&[0]+1));",";(Indexof_2_Temp& (Indexof_2_Par&[0]+1))
EndIF
Inc Indexof_2_Durchlauf&
@Set("Decimals",Indexof_2_Decimals&)
Endwhile
EndIF
Return Indexof_2_Return$[]
Endproc
|
|
|
| |
|
|