Bei 2 wird nach der pp-Adresse +4 ein Wert übergeben
Bei 3 wird von der pp-Adresse + 4 der neue Wert geholt >> der stimmt auch
Bei 4 mit ord(s[4]) kommt der von Punkt 1 , also nicht der neue Wert
Was ist denn jetzt los???...hm...
Kann man den Speicher nur lesen
Code: Alles auswählen
import os
from ctypes import *
dl = cdll.LoadLibrary("pydll.dll")
laenge=os.path.getsize("cpc.bin")
print
print laenge," byte lesen"
print
f=open("cpc.bin", "rb")
s = f.read(laenge)
for j in s:
print ord(j)
pp=pointer(create_string_buffer(s,laenge))
bb=dl.hole(pp,4) >>>> 1
print bb (wert=188)
dl.gebe(pp,4) >>>>> 2
(wert=99)
bb=dl.hole(pp,4) >>>>> 3
print bb(wert=99)
print ord(s[4]) >>>>> 4
(wert=188)
Code: Alles auswählen
ProcedureCDLL.c hole(*adr.l,rel.l)
wertc = PeekB(*adr+rel)
ProcedureReturn wertc
EndProcedure
ProcedureCDLL gebe(*adr.l,rel.l)
PokeB(*adr+rel,99)
EndProcedure