fehler?

11/08/2010 15:45 maxi39#1
hi,

ich hab ein problem mit ner funktion und zwar werden bei mir nur die ersten 3 label ersetzt von 8

vlt fällt euch etwas fehlerhaftes im script auf: (ich finde kein fehler vom script aufbau vlt hab ich was übersehen, ich möchte ganz sicher gehen)

PHP Code:
Func _cox1()

    Global 
$PID ProcessExists("mc2.exe")
    If 
$PID 0 Then
         $Handle 
_MemoryOpen($PID)
        
$Address _MemoryModuleGetBaseAddress(ProcessExists("mc2.exe"), "mc2.exe")
         
$Address "0x" Hex($Address Dec("174D81"))
    EndIf

    
$b 0
    $i 
0
    
Do

$i $i 1


        Dim $Offset
[7] = [000x10"0x"&$b&""0x6c0x100x70]



         
local  $label24ab _MemoryPointerRead($Address$Handle$Offset"float")

        If 
$b 0 Then
            GUICtrlSetData
($Label24$label24ab[1])
        ElseIf 
$b 4 Then
            GUICtrlSetData
($Label25$label24ab[1])

        ElseIf 
$b 8 Then
            GUICtrlSetData
($Label26$label24ab[1])

        ElseIf 
$b 12 then
            GUICtrlSetData
($Label27$label24ab[1])

        ElseIf 
$b 16 then
            GUICtrlSetData
($Label28$label24ab[1])
        ElseIf 
$b 20 Then
            GUICtrlSetData
($Label29$label24ab[1])
        ElseIf 
$b 24 Then
            GUICtrlSetData
($Label30$label24ab[1])
        ElseIf 
$b 28 Then
            GUICtrlSetData
($Label31$label24ab[1])
        EndIf



        
$b $b 4


    Until $i 
8





EndFunc   
;==>_cox1 
11/08/2010 19:34 MoepMeep#2
Du hast then mal groß mal klein geschrieben, kA obs daran liegt ;)
11/08/2010 20:06 lolkop#3
bist du dir auch ganz sicher, das die offsets in so extrem komischen schritten vorwärts gehen?

ich mein die ersten 3 definitionen gehen in 4er schritten.
beim nächsten hast du 0x12, was ja 18 entspricht, also einen 10er schritt.
dann kommt wieder ein 4er schritt zu 0x16.
danach kommt wieder ein 10er schritt von 0x16 zu 0x20.
und zum schluss nochmal 2 4er schritte.

bin mir schon recht sicher, das das absolut falsch ist.
ausserdem ist das was du da umgesetzt hast, eine einfache for schleife...
weis nicht was du da mit 2 variablen und einer do schleife rumhantierst :o

so könnte man das was du da gebastelt hast zusammen fassen:
Code:
Func _cox1()
	Global $PID = ProcessExists("mc2.exe")
	If $PID > 0 Then
		$Handle = _MemoryOpen($PID)
		$Address = _MemoryModuleGetBaseAddress(ProcessExists("mc2.exe"), "mc2.exe")
		$Address = "0x" & Hex($Address + Dec("174D81"))
	EndIf

	For $b = 0 To 28 Step 4
		Dim $Offset[7] = [0, 0, 0x10, "0x" & $b & "", 0x6c, 0x10, 0x70]
		Local $label24ab = _MemoryPointerRead($Address, $Handle, $Offset, "float")
		GUICtrlSetData(Eval('Label'&24+($b/4)), $label24ab[1])
	Next
EndFunc   ;==>_cox1
wobei ich mir wie gesagt schon recht sicher bin, dass deine offsetdefinition absolut falsch ist.
11/08/2010 21:46 maxi39#4
hab kurz nachdem ich gepostet hatte mir das script nochma genauer angeguckt und bin auf eine lösung gekommen:


PHP Code:
Func _cox1()

    Global 
$PID ProcessExists("mc2.exe")
    If 
$PID 0 Then
         $Handle 
_MemoryOpen($PID)
        
$Address _MemoryModuleGetBaseAddress(ProcessExists("mc2.exe"), "mc2.exe")
         
$Address "0x" Hex($Address Dec("174D81"))
    EndIf

    
$b 0x0
    $i 
0
    
Do

$i $i 1

if $b 0x12 then
$b 
12
EndIf
        
Dim $Offset[7] = [000x10$b0x6c0x100x70]



         
local  $label24ab _MemoryPointerRead($Address$Handle$Offset"float")

        If 
$b 0 Then
            GUICtrlSetData
($Label24$label24ab[1])
        ElseIf 
$b 4 Then
            GUICtrlSetData
($Label25$label24ab[1])

        ElseIf 
$b 8 Then
            GUICtrlSetData
($Label26$label24ab[1])

        ElseIf 
$b 12 then
            GUICtrlSetData
($Label27$label24ab[1])

        ElseIf 
$b 16 then
            GUICtrlSetData
($Label28$label24ab[1])
        ElseIf 
$b 20 Then
            GUICtrlSetData
($Label29$label24ab[1])
        ElseIf 
$b 24 Then
            GUICtrlSetData
($Label30$label24ab[1])
        ElseIf 
$b 28 Then
            GUICtrlSetData
($Label31$label24ab[1])
        EndIf



        
$b $b 4


    Until $i 
8





EndFunc   
;==>_cox1 

dann hats auch funktioniert