PokeS löscht Pointer o_O !
Verfasst: 01.01.2005 04:10
Hallo !
Ich programmiere doch ein bischen an Easy
. Ist sogar ziehmlich weit und ist im Begriff ziehmlich was Leisteun zu können. Nun habe ich aber ein kleines Problem. PokeS() löscht bei mir nach dem Aufruf den Pointer
.
Hier mal der kleine Code:
Funktioniert eigentlich ganz herrlich. Aber wenn ich die Funktion so aufrufe: löscht PokeS aus einem merkwürdigem Grund den *MemPoint
. PokeS funktioniert noch (denke ich) aber *MemPoint\MemSize = Len(strString) crasht dann. Speicher() ist übrigens auch als sMemory definiert. Wenn ich aber das Len(strString) weg mache funktioniert es weiterhin wunderbar o_O. Hier der ASM Output vom Compiler der Zeile PokeS().... und der darunter:
könnte sich Fred das bitte nochmal ansehen ?
---
Ist jetz bischen Merkwürdig geschrieben, ich hoffe, ihr versteht mich
Ich programmiere doch ein bischen an Easy
Hier mal der kleine Code:
Code: Alles auswählen
Structure sMemory
MemPointer.l
MemType.l
MemSize.l
EndStructure
Procedure SetString(strString.s, *MemPoint.sMemory)
If *MemPoint\MemSize < Len(strString)
*MemPoint\MemPointer = ReAllocateMemory(*MemPoint\MemPointer, Len(strString))
EndIf
PokeS(*MemPoint\MemPointer, strString, Len(strString))
*MemPoint\MemSize = Len(strString)
*MemPoint\MemType = #TYPString
EndProcedureCode: Alles auswählen
SetString(Stack()\stoDataS, Speicher(CountList(Stack())-lngI))Code: Alles auswählen
; PokeS(*MemPoint\MemPointer, strString, Len(strString))
MOV eax,dword [esp]
CALL PB_Len
PUSH eax
PUSH dword [esp+4]
MOV ebp,dword [esp+12]
MOV eax,dword [ebp]
CALL PB_PokeS2
; *MemPoint\MemSize = Len(strString)
MOV eax,dword [esp]
CALL PB_Len
MOV ebp,dword [esp+8-4]
MOV dword [ebp+8],eax---
Ist jetz bischen Merkwürdig geschrieben, ich hoffe, ihr versteht mich