Loro
01.09.2008, 19:58
Servus alle zusammen,
ich versuche gerade ein Array an eine sub zu übergeben und habe mich für varptr() entschieden. Aber irgendwie klappt das nicht richtig.
$regfile = "m128def.dat"
$crystal = 8000000
$sim
Dim Tabelle(5) As Long
Tabelle(1) = 100
Tabelle(2) = 200
Tabelle(3) = 300
Tabelle(4) = 400
Tabelle(5) = 500
Dim Addresse As Word
Dim X As Byte
Declare Sub Array_anzeigen(addr As Word)
Aufruf:
Addresse = Varptr(tabelle(1))
Print " adresse ";
Print Addresse
Addresse = Varptr(tabelle(2))
Print " adresse ";
Print Addresse
Addresse = Varptr(tabelle(3))
Print " adresse ";
Print Addresse
Addresse = Varptr(tabelle(4))
Print " adresse ";
Print Addresse
Addresse = Varptr(tabelle(5))
Print " adresse ";
Print Addresse
Dim I As Byte
For I = 1 To 5
Print Tabelle(i)
Next I
Addresse = Varptr(tabelle(1))
Call Array_anzeigen(addresse)
Do
nop
Loop
End 'end program
Sub Array_anzeigen(addr As Word)
Local Y As Byte
Local D As Byte
Print " "
Print "Von Suboutine aus :"
For Y = 1 To 5 ' einfache Schleife
D = Inp(addr)
Print "addr ";
Print Addr
Print D
Addr = Addr + 4 ' Inhalt des Arrays anzeigen.
Print "tabelle ";
Print Tabelle(y)
Next Y
End Sub
Das was dabei raus kommt ist folgendes:
adresse 257
adresse 261
adresse 265
adresse 269
adresse 273
100
200
300
400
500
Von Suboutine aus :
addr 257
100
tabelle 100
addr 261
200
tabelle 200
addr 265
44
tabelle 300
addr 269
144
tabelle 400
addr 273
244
tabelle 500
kann mir jemand Verraten warum der 2 mal von den Richtigen Adresse liest, auch die richtigen Werte holt, aber dann die Falschen wert von den richtigen adressen?
ich versuche gerade ein Array an eine sub zu übergeben und habe mich für varptr() entschieden. Aber irgendwie klappt das nicht richtig.
$regfile = "m128def.dat"
$crystal = 8000000
$sim
Dim Tabelle(5) As Long
Tabelle(1) = 100
Tabelle(2) = 200
Tabelle(3) = 300
Tabelle(4) = 400
Tabelle(5) = 500
Dim Addresse As Word
Dim X As Byte
Declare Sub Array_anzeigen(addr As Word)
Aufruf:
Addresse = Varptr(tabelle(1))
Print " adresse ";
Print Addresse
Addresse = Varptr(tabelle(2))
Print " adresse ";
Print Addresse
Addresse = Varptr(tabelle(3))
Print " adresse ";
Print Addresse
Addresse = Varptr(tabelle(4))
Print " adresse ";
Print Addresse
Addresse = Varptr(tabelle(5))
Print " adresse ";
Print Addresse
Dim I As Byte
For I = 1 To 5
Print Tabelle(i)
Next I
Addresse = Varptr(tabelle(1))
Call Array_anzeigen(addresse)
Do
nop
Loop
End 'end program
Sub Array_anzeigen(addr As Word)
Local Y As Byte
Local D As Byte
Print " "
Print "Von Suboutine aus :"
For Y = 1 To 5 ' einfache Schleife
D = Inp(addr)
Print "addr ";
Print Addr
Print D
Addr = Addr + 4 ' Inhalt des Arrays anzeigen.
Print "tabelle ";
Print Tabelle(y)
Next Y
End Sub
Das was dabei raus kommt ist folgendes:
adresse 257
adresse 261
adresse 265
adresse 269
adresse 273
100
200
300
400
500
Von Suboutine aus :
addr 257
100
tabelle 100
addr 261
200
tabelle 200
addr 265
44
tabelle 300
addr 269
144
tabelle 400
addr 273
244
tabelle 500
kann mir jemand Verraten warum der 2 mal von den Richtigen Adresse liest, auch die richtigen Werte holt, aber dann die Falschen wert von den richtigen adressen?