i am using ctypes to read some data from an external Database.
this data is written in struct. the problem is, that the recieved Data could have different results. for bettern understanding: i have created two structures:
class BEAM(Structure):
    _fields_ = [
        ('NR', c_ulong),
        ("NODE1", c_ulong),
        ("NODE2", c_ulong),
        ("NP", c_ulong),
        ("DL", c_float),
        ("foo", c_ulong),
        ("foobar", c_ulong),
        ("bar", c_ulong),
        ("barfoo", c_ulong)
    ]
class DUMMY(Structure):
    _fields_ = [
        ('ID', c_ulong),
        ("NODE1", c_ulong),
        ("NODE2", c_ulong),
        ("NP", c_ulong),
        ("DL", c_ulong),
        ("foo", c_ulong),
        ("foobar", c_ulong),
        ("bar", c_ulong),
        ("barfoo", c_ulong)
    ]
the difference between this structs is the u_long type in "DL"... in DUMMY it is u_long, in BEAM it's u_float.
after reading the datbase i get into DL = 1056964624 but in float is should be 0.5
my question is how can i cast the DUMMY into BEAM.
i have tried 
BEAMRecord = cast(Record, POINTER(BEAMRecord)) but there is an error called 
TypeError: must be a ctypes type
here is my code:
'''
Structure for DataLength
'''
class Len(Structure):
    _fields_ = [
        ('buffer', c_int)
    ]
SLNRecord = element.SLN()
BEAMRecord = element.BEAM()
Record = element.DUMMY()
RecLen = Len()
sofistik = cdll.LoadLibrary("cdb_w30_x64.dll")
py_sof_cdb_init = sofistik.sof_cdb_init
py_sof_cdb_close = sofistik.sof_cdb_close
py_sof_cdb_get = sofistik.sof_cdb_get
py_sof_cdb_get.restype = c_int
Index = py_sof_cdb_init("system.cdb", 99)
pos = c_int(0)
while True:
    RecLen.buffer = sizeof(Record)
    ie = py_sof_cdb_get(Index, 100, 0, byref(Record), byref(RecLen), pos)
    pos.value += 1
    if ie > 1:
        break
    if Record.ID > 0:
        BEAMRecord = cast(Record, POINTER(BEAMRecord))
        print BEAMRecord
py_sof_cdb_close(0)
exit()
thanks for helping
Solution:
by reading this thread i modified @Mr Temp question
i created a BEAMRecordPointer = POINTER(element.BEAM) and  BEAMRecord = cast(Record, POINTER(BEAMRecord)) i rewrite to BAR = cast(byref(Record), BEAMRecordPointer).contents
so the solution looks like this
if Record.ID > 0:
        BAR = cast(byref(Record), BEAMRecordPointer).contents
        print BAR
I'm doing it wrong?
Update 1
@eryksun has a really good shothand for the cast() function. Thank you.