mirror of
https://github.com/QB64-Phoenix-Edition/QB64pe.git
synced 2024-06-30 05:10:37 +00:00
Allows watching one element of UDTs (no strings yet).
This commit is contained in:
parent
1049d9db16
commit
9423080f6b
|
@ -261,6 +261,7 @@ SUB vwatch (globalVariables AS _OFFSET, localVariables AS _OFFSET)
|
|||
vw_arrayIndex = CVL(MID$(vw_value$, 10, 4))
|
||||
vw_elementoffset = _CV(_OFFSET, MID$(vw_value$, 14, LEN(vw_elementoffset)))
|
||||
vw_varSize = CVL(MID$(vw_value$, 14 + LEN(vw_elementoffset), 4))
|
||||
IF vw_varSize = 0 THEN PRINT "NoSize": GOTO cmdProcessingDone
|
||||
vw_i = CVI(MID$(vw_value$, 18 + LEN(vw_elementoffset), 2))
|
||||
IF vw_i THEN
|
||||
vw_scope$ = MID$(vw_value$, 20 + LEN(vw_elementoffset), vw_i)
|
||||
|
@ -315,6 +316,7 @@ SUB vwatch (globalVariables AS _OFFSET, localVariables AS _OFFSET)
|
|||
END IF
|
||||
|
||||
'vw_address now points to the actual data
|
||||
PRINT "vw_elementoffset =" ; vw_elementoffset
|
||||
vw_address = vw_address + vw_elementoffset
|
||||
vw_buf$ = SPACE$(vw_varSize)
|
||||
vw_m = _MEM(vw_address, vw_varSize)
|
||||
|
|
|
@ -7574,8 +7574,10 @@ SUB DebugMode
|
|||
RETURN
|
||||
|
||||
GetVarSize:
|
||||
varSize& = 0
|
||||
varType$ = usedVariableList(tempIndex&).varType
|
||||
IF INSTR(varType$, "STRING *") THEN varType$ = "STRING"
|
||||
checkVarType:
|
||||
SELECT CASE varType$
|
||||
CASE "_BYTE", "_UNSIGNED _BYTE", "BYTE", "UNSIGNED BYTE": varSize& = LEN(dummy%%)
|
||||
CASE "INTEGER", "_UNSIGNED INTEGER", "UNSIGNED INTEGER": varSize& = LEN(dummy%)
|
||||
|
@ -7586,6 +7588,9 @@ SUB DebugMode
|
|||
CASE "_FLOAT", "FLOAT": varSize& = LEN(dummy##)
|
||||
CASE "_OFFSET", "_UNSIGNED _OFFSET", "OFFSET", "UNSIGNED OFFSET": varSize& = LEN(dummy%&)
|
||||
CASE "STRING": varSize& = LEN(dummy%&) + LEN(dummy&)
|
||||
CASE ELSE 'UDT?
|
||||
varType$ = usedVariableList(tempIndex&).elementTypes
|
||||
IF LEN(varType$) THEN GOTO checkVarType
|
||||
END SELECT
|
||||
RETURN
|
||||
END SUB
|
||||
|
@ -8078,6 +8083,47 @@ FUNCTION idevariablewatchbox$(currentScope$, filter$, selectVar, returnAction)
|
|||
usedVariableList(varDlgList(y).index).elementOffset = 0
|
||||
GOTO unWatch
|
||||
ELSE
|
||||
typ = typ - ISUDT
|
||||
typ = typ - ISREFERENCE
|
||||
IF typ AND ISINCONVENTIONALMEMORY THEN typ = typ - ISINCONVENTIONALMEMORY
|
||||
SELECT CASE typ
|
||||
CASE BYTETYPE
|
||||
usedVariableList(varDlgList(y).index).elementTypes = "_BYTE"
|
||||
CASE UBYTETYPE
|
||||
usedVariableList(varDlgList(y).index).elementTypes = "_UNSIGNED _BYTE"
|
||||
CASE INTEGERTYPE
|
||||
usedVariableList(varDlgList(y).index).elementTypes = "INTEGER"
|
||||
CASE UINTEGERTYPE
|
||||
usedVariableList(varDlgList(y).index).elementTypes = "_UNSIGNED INTEGER"
|
||||
CASE LONGTYPE
|
||||
usedVariableList(varDlgList(y).index).elementTypes = "LONG"
|
||||
CASE ULONGTYPE
|
||||
usedVariableList(varDlgList(y).index).elementTypes = "_UNSIGNED LONG"
|
||||
CASE INTEGER64TYPE
|
||||
usedVariableList(varDlgList(y).index).elementTypes = "_INTEGER64"
|
||||
CASE UINTEGER64TYPE
|
||||
usedVariableList(varDlgList(y).index).elementTypes = "_UNSIGNED _INTEGER64"
|
||||
CASE SINGLETYPE
|
||||
usedVariableList(varDlgList(y).index).elementTypes = "SINGLE"
|
||||
CASE DOUBLETYPE
|
||||
usedVariableList(varDlgList(y).index).elementTypes = "DOUBLE"
|
||||
CASE FLOATTYPE
|
||||
usedVariableList(varDlgList(y).index).elementTypes = "_FLOAT"
|
||||
CASE OFFSETTYPE
|
||||
usedVariableList(varDlgList(y).index).elementTypes = "_OFFSET"
|
||||
CASE UOFFSETTYPE
|
||||
usedVariableList(varDlgList(y).index).elementTypes = "_UNSIGNED _OFFSET"
|
||||
CASE ELSE
|
||||
IF typ AND ISSTRING THEN
|
||||
usedVariableList(varDlgList(y).index).elementTypes = "STRING"
|
||||
ELSE
|
||||
usedVariableList(varDlgList(y).index).watch = 0
|
||||
usedVariableList(varDlgList(y).index).elements = ""
|
||||
usedVariableList(varDlgList(y).index).elementOffset = 0
|
||||
result = idemessagebox("Error", "Element must be of a native data type", "#OK")
|
||||
GOTO unWatch
|
||||
END IF
|
||||
END SELECT
|
||||
'result = idemessagebox("Result", v$ + "\n" + result$ + "\n" + STR$(typ), "#OK")
|
||||
usedVariableList(varDlgList(y).index).elementOffset = VAL(MID$(result$, _INSTRREV(result$, sp3) + 1))
|
||||
END IF
|
||||
|
|
|
@ -112,7 +112,7 @@ TYPE usedVarList
|
|||
AS LONG id, linenumber, includeLevel, includedLine, scope, localIndex
|
||||
AS _BYTE used, watch, isarray
|
||||
AS STRING name, cname, varType, includedFile, subfunc, mostRecentValue
|
||||
AS STRING watchRange, indexes, elements 'for Arrays and UDTs
|
||||
AS STRING watchRange, indexes, elements, elementTypes 'for Arrays and UDTs
|
||||
AS _OFFSET elementOffset
|
||||
END TYPE
|
||||
|
||||
|
@ -25986,6 +25986,7 @@ SUB manageVariableList (__name$, __cname$, localIndex AS LONG, action AS _BYTE)
|
|||
usedVariableList(i).watchRange = ""
|
||||
usedVariableList(i).indexes = ""
|
||||
usedVariableList(i).elements = ""
|
||||
usedVariableList(i).elementTypes = ""
|
||||
usedVariableList(i).elementOffset = 0
|
||||
totalVariablesCreated = totalVariablesCreated + 1
|
||||
END IF
|
||||
|
|
Loading…
Reference in a new issue