Code: Alles auswählen
Procedure OnError()
Protected Msg$
Msg$ = "There was an error:"+Chr(13)+Chr(10)+Chr(13)+Chr(10)
Msg$ + "Description: " + GetErrorDescription()+Chr(13)+Chr(10)
Msg$ + "Addr: " + Str(GetErrorAddress())+Chr(13)+Chr(10)
Msg$ + "Module: "+GetErrorModuleName()+Chr(13)+Chr(10)
Msg$ + "LineNR: " + Str(GetErrorLineNR()+1)+Chr(13)+Chr(10)
Msg$ + "Total number of errors: "+Str(GetErrorCounter())+Chr(13)+Chr(10)
Error = getlasterror_()
tmpstring.s =Space(200)
FormatMessage_(#FORMAT_MESSAGE_FROM_SYSTEM,0,Error,#LANG_NEUTRAL,@tmpstring,200,0)
tmpstring = Trim(tmpstring)
Msg$ + "GetLastError: "+tmpstring+Chr(13)+Chr(10)
Msg$ + "Continue program ?"
If MessageRequester("Error!",Msg$,16|#PB_MessageRequester_YesNo) = 6
ProcedureReturn #True
Else
End
EndIf
EndProcedure
OnErrorGosub(@OnError())
Buffer = AllocateMemory(1024)
Destination = AllocateMemory(1024)
Destinationlen = 0
i = 0
Repeat
len = 1024
PokeS(Buffer,Space(len))
ReAllocateMemory(Destination,Destinationlen + len)
CopyMemory(Buffer,Destination+Destinationlen,len)
Destinationlen + len
i + 1
Debug Str(i) +":"+ PeekS(Destination,Destinationlen)
Delay(100)
Until 0Code: Alles auswählen
1: [...viele Leerzeichen...]
2:˜"ˆ
3:˜"ˆ
4:˜"ˆ
5:xˆ
6:xˆ
7:xˆ
8:xˆ
9:xˆ
10:xˆ
11:xˆ
12:xˆ
13:xˆ
14:xˆ
15:xˆ
16:xˆ
17:xˆ
18:xˆ
19:xˆ
20:xˆ
21:xˆ
22:xˆ
23:xˆ
Wär das der einzige Fehler könnte man ja sagen mein Speicher is voll, aber er hat zu dem Zeitpunkt erst 25 KB allociert (und ein AllocateMemory(100000) funzt dann noch). Außerdem stimmt ja mit dem Output etwas nicht.. woher kommt "˜"ˆ" und "xˆ" ?
Mit Stringüberlauf kanns übrigens auch nichts zu tun haben, dann müsste ja trotzdem vorher Leerzeichen debugt werden.
Ich schätze ReallocateMemory() oder CopyMemory() funktionieren nicht richtig. Vielleicht liegts aber auch an mir oder meinem Comp. Wär also nett wenn ihr euch das mal angucken würdet.

