Code: Alles auswählen
data = f.read(intsize)
Wie Bekomme ich jetzt die Adresse(Pointer) oben von der Liste "data".
Danke.
Gruss
Code: Alles auswählen
data = f.read(intsize)
Code: Alles auswählen
import os
from ctypes import *
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)
p=create_string_buffer(s,laenge)
print p
Code: Alles auswählen
Global wertl.l,wertf.f
ProcedureCDLL.l multl(varl.l)
wertl.l = varl.l * 5
ProcedureReturn wertl.l
EndProcedure
ProcedureCDLL.f multf(varf.f)
wertf.f = varf.f * 5.4
ProcedureReturn wertf.f
EndProcedure
ProcedureCDLL.l adresse(*adr.l)
wertl.l = PeekB(*adr+2)
ProcedureReturn wertl.l
EndProcedure
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)
p=create_string_buffer(s,laenge)
pp = pointer(p)
bb=dl.adresse(pp)
print bb
Code: Alles auswählen
#include <stdio.h>
int print_array(char * t, int t_len) {
int i;
// mit Pointern
for (i=0; i<t_len; ++i)
printf("%c", *(t+i));
printf("\n");
// oder Indexzugriff
for (i=0; i<t_len; ++i)
printf("%c", t[i]);
printf("\n");
return 0;
}
Code: Alles auswählen
>>> import ctypes
>>> bla = ctypes.cdll.LoadLibrary("/pfad/zu/lib")
>>> bla.print_array(ctypes.create_string_buffer('hallo'), 5)
hallo
hallo
0
Code: Alles auswählen
ProcedureCDLL.c adresse(*adr.l)
wertl.c = PeekB(*adr+2)
ProcedureReturn wertl.c
EndProcedure
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.adresse(pp,67)
print bb
Die beiden oberen Proceduren von Purebasic, sogar mit float funktionieren wunderbar.Kannst Du denn andere Funktionen Deiner PureBasic-DLLs mittels ctypes erreichen?
Ha,ha...., es gibt keine Nachteile.Ich weiss nicht wie gut PureBasic hier mitspielt. Die Nachteile bleiben in jedem Falle bestehen.
Code: Alles auswählen
ProcedureCDLL.l MyTest()
MOV eax, 45
ProcedureReturn
EndProcedure