PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Subaufrufe nicht für arrays?



m_herr
26.11.2005, 13:37
Hallo Leute,

ich habe eine Sub bei mir, die mit einer Integerzahl (a) etwas macht. Soweit so gut. Nun übergebe ich aber der Sub nicht a, sondern b(2) (z.B.)
und schon streikt das Programm.

Muß ich jetzt wirklich die Zahl aus dem Array auslesen, in eine Temp-Variable speichern und dann diese Temp-Variable der Sub übergeben?
Hoffe mal nicht..ich habe es jetzt mal provisorisch so gemacht und dann geht es. aber ist halt mehr aufwand/speicherplatz...

Vielen Dank

x-ryder
26.11.2005, 15:41
könntest du mal dein programm posten bitte?

m_herr
26.11.2005, 16:10
ja klar:
sub mach_was(a:integer)
dim a(8) as integer
dim temp as integer

sub mach_was (a:integer)
locate 1,1
lcd a
end sub



geht nicht:

call mach_was(a(2))

geht:

temp=a(2)
call mach_was(temp)



nur das kann es irgendwie nicht so recht sein...

x-ryder
26.11.2005, 16:32
ich glaube, das ist nicht machbar, das kann bascom einfach nicht, musste in temp speichern, aber durch eine int geht die welt nicht unter oder?

m_herr
26.11.2005, 16:37
naja, mach das mal 30mal in einem ausgereiztem quellcode. und 100,1% compilat passt nicht, 99,9% aber schon.
da kann eine anweisung entscheiden, ob das projekt geht, oder von vorne angefangen wird....

x-ryder
26.11.2005, 16:42
hab ich schon öfters ^^ aber du brauchst ja die var nur einmal, und dann immer nur zuweisen, das verbraucht eine instruktion

PicNick
27.11.2005, 08:55
Du kannst auch den Tab-Index übergeben


dim array(8) as integer
call lcd_int(5)
......
sub lcd_int(byval idx as byte)
lcd array(idx)
end sub

PicNick
27.11.2005, 08:59
Zum Code-sparen ein tip: subroutinen mit argumenten brauchen mächtig flash:
Wenn eine sub nicht rekursiv oder reentrant sein muss:


dim array(8) as integer
dim param as byte
param = 5
gosub lcd_int
......
lcd_int:
lcd array(param)
return