mirror of
https://github.com/QB64-Phoenix-Edition/QB64pe.git
synced 2024-06-29 11:40:38 +00:00
Properly retrives STRING storage (Watch List dialog)
This commit is contained in:
parent
276536d467
commit
704b781cd2
|
@ -7088,7 +7088,11 @@ SUB DebugMode
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
tempVarType$ = varType$
|
tempVarType$ = varType$
|
||||||
IF INSTR(varType$, "STRING *") THEN tempVarType$ = "STRING"
|
fixedVarSize& = 0
|
||||||
|
IF INSTR(varType$, "STRING *") THEN
|
||||||
|
tempVarType$ = "STRING"
|
||||||
|
fixedVarSize& = VAL(MID$(varType$, _INSTRREV(varType$, "* ") + 2))
|
||||||
|
END IF
|
||||||
IF INSTR(varType$, "BIT *") THEN tempVarType$ = "_BIT"
|
IF INSTR(varType$, "BIT *") THEN tempVarType$ = "_BIT"
|
||||||
IF tempVarType$ = "_BIT" AND INSTR(varType$, "UNSIGNED") > 0 THEN
|
IF tempVarType$ = "_BIT" AND INSTR(varType$, "UNSIGNED") > 0 THEN
|
||||||
tempVarType$ = "_UNSIGNED _BIT"
|
tempVarType$ = "_UNSIGNED _BIT"
|
||||||
|
@ -7149,6 +7153,10 @@ SUB DebugMode
|
||||||
CASE "STRING"
|
CASE "STRING"
|
||||||
varSize& = LEN(value$)
|
varSize& = LEN(value$)
|
||||||
result$ = value$
|
result$ = value$
|
||||||
|
IF fixedVarSize& THEN
|
||||||
|
varSize& = fixedVarSize&
|
||||||
|
result$ = LEFT$(result$, fixedVarSize&)
|
||||||
|
END IF
|
||||||
END SELECT
|
END SELECT
|
||||||
|
|
||||||
cmd$ = cmd$ + tempHeader$
|
cmd$ = cmd$ + tempHeader$
|
||||||
|
@ -7995,22 +8003,17 @@ FUNCTION idevariablewatchbox$(currentScope$, filter$, selectVar, returnAction)
|
||||||
IF (IdeDebugMode > 0 AND focus = 5 AND info <> 0) THEN
|
IF (IdeDebugMode > 0 AND focus = 5 AND info <> 0) THEN
|
||||||
'set address
|
'set address
|
||||||
sendValue:
|
sendValue:
|
||||||
_CONSOLE ON: _ECHO "At sendValue:"
|
|
||||||
y = ABS(o(varListBox).sel)
|
y = ABS(o(varListBox).sel)
|
||||||
_CONSOLE ON: _ECHO "y =" + STR$(y)
|
|
||||||
|
|
||||||
IF y >= 1 AND y <= totalVisibleVariables THEN
|
IF y >= 1 AND y <= totalVisibleVariables THEN
|
||||||
tempIndex& = varDlgList(y).index
|
tempIndex& = varDlgList(y).index
|
||||||
_CONSOLE ON: _ECHO "tempIndex& =" + STR$(tempIndex&)
|
|
||||||
IF usedVariableList(tempIndex&).subfunc = currentScope$ OR usedVariableList(tempIndex&).subfunc = "" THEN
|
IF usedVariableList(tempIndex&).subfunc = currentScope$ OR usedVariableList(tempIndex&).subfunc = "" THEN
|
||||||
'scope is valid
|
'scope is valid
|
||||||
_CONSOLE ON: _ECHO "Scope is valid"
|
|
||||||
tempArrayIndex& = 0
|
tempArrayIndex& = 0
|
||||||
tempStorage& = 0
|
tempStorage& = 0
|
||||||
tempIsUDT& = 0
|
tempIsUDT& = 0
|
||||||
tempElementOffset$ = MKL$(0)
|
tempElementOffset$ = MKL$(0)
|
||||||
IF usedVariableList(tempIndex&).isarray THEN
|
IF usedVariableList(tempIndex&).isarray THEN
|
||||||
_CONSOLE ON: _ECHO "it's an array"
|
|
||||||
v$ = ideinputbox$("Change Value", "#Index to change", temp$, "01234567890", 45, 0, ok)
|
v$ = ideinputbox$("Change Value", "#Index to change", temp$, "01234567890", 45, 0, ok)
|
||||||
IF ok THEN
|
IF ok THEN
|
||||||
IF LEN(v$) > 0 THEN
|
IF LEN(v$) > 0 THEN
|
||||||
|
@ -8024,12 +8027,10 @@ FUNCTION idevariablewatchbox$(currentScope$, filter$, selectVar, returnAction)
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
varType$ = usedVariableList(tempIndex&).varType
|
varType$ = usedVariableList(tempIndex&).varType
|
||||||
_CONSOLE ON: _ECHO "varType$ = " + varType$
|
|
||||||
tempVarType$ = varType$
|
tempVarType$ = varType$
|
||||||
IF INSTR(varType$, "STRING *") THEN tempVarType$ = "STRING"
|
IF INSTR(varType$, "STRING *") THEN tempVarType$ = "STRING"
|
||||||
IF INSTR(varType$, "_BIT *") THEN tempVarType$ = "_BIT"
|
IF INSTR(varType$, "_BIT *") THEN tempVarType$ = "_BIT"
|
||||||
IF INSTR(nativeDataTypes$, tempVarType$) = 0 THEN
|
IF INSTR(nativeDataTypes$, tempVarType$) = 0 THEN
|
||||||
_CONSOLE ON: _ECHO "It's a UDT"
|
|
||||||
'It's a UDT
|
'It's a UDT
|
||||||
tempIsUDT& = -1
|
tempIsUDT& = -1
|
||||||
elementIndexes$ = ""
|
elementIndexes$ = ""
|
||||||
|
@ -8046,14 +8047,12 @@ FUNCTION idevariablewatchbox$(currentScope$, filter$, selectVar, returnAction)
|
||||||
elementIndexes$ = elementIndexes$ + MKL$(E)
|
elementIndexes$ = elementIndexes$ + MKL$(E)
|
||||||
i = i + 1
|
i = i + 1
|
||||||
LOOP
|
LOOP
|
||||||
_CONSOLE ON: _ECHO "Will choose UDT element"
|
|
||||||
PCOPY 0, 4
|
PCOPY 0, 4
|
||||||
v$ = ideelementwatchbox$(usedVariableList(tempIndex&).name + ".", elementIndexes$, 0, -1, ok)
|
v$ = ideelementwatchbox$(usedVariableList(tempIndex&).name + ".", elementIndexes$, 0, -1, ok)
|
||||||
PCOPY 2, 0
|
PCOPY 2, 0
|
||||||
PCOPY 2, 1
|
PCOPY 2, 1
|
||||||
SCREEN , , 1, 0
|
SCREEN , , 1, 0
|
||||||
IF ok = -2 THEN
|
IF ok = -2 THEN
|
||||||
_CONSOLE ON: _ECHO "ok = -2"
|
|
||||||
getid usedVariableList(tempIndex&).id
|
getid usedVariableList(tempIndex&).id
|
||||||
IF id.t = 0 THEN
|
IF id.t = 0 THEN
|
||||||
typ = id.arraytype AND 511
|
typ = id.arraytype AND 511
|
||||||
|
@ -8143,22 +8142,28 @@ FUNCTION idevariablewatchbox$(currentScope$, filter$, selectVar, returnAction)
|
||||||
END IF
|
END IF
|
||||||
END IF
|
END IF
|
||||||
storageSlot& = 0
|
storageSlot& = 0
|
||||||
i = 5
|
IF LEN(usedVariableList(tempIndex&).storage) = 4 THEN
|
||||||
DO
|
storageSlot& = CVL(usedVariableList(tempIndex&).storage)
|
||||||
i = INSTR(i + 1, variableWatchList$, MKL$(-1) + MKL$(tempIndex&) + MKL$(tempArrayIndex&))
|
ELSE
|
||||||
IF i = 0 THEN EXIT DO
|
i = 5
|
||||||
IF MID$(variableWatchList$, i + 16, 4) = tempElementOffset$ THEN
|
DO
|
||||||
'we found where this element's value is being stored
|
i = INSTR(i + 1, variableWatchList$, MKL$(-1) + MKL$(tempIndex&) + MKL$(tempArrayIndex&))
|
||||||
storageSlot& = CVL(MID$(variableWatchList$, i + 20, 4))
|
IF i = 0 THEN EXIT DO
|
||||||
EXIT DO
|
IF MID$(variableWatchList$, i + 16, 4) = tempElementOffset$ THEN
|
||||||
END IF
|
'we found where this element's value is being stored
|
||||||
LOOP
|
storageSlot& = CVL(MID$(variableWatchList$, i + 20, 4))
|
||||||
|
EXIT DO
|
||||||
|
END IF
|
||||||
|
LOOP
|
||||||
|
END IF
|
||||||
_CONSOLE ON: _ECHO "Will input data"
|
_CONSOLE ON: _ECHO "Will input data"
|
||||||
a2$ = ""
|
a2$ = ""
|
||||||
IF storageSlot& > 0 THEN
|
IF storageSlot& > 0 THEN
|
||||||
_CONSOLE ON: _ECHO "Found storage slot"
|
_CONSOLE ON: _ECHO "Found storage slot"
|
||||||
a2$ = vWatchReceivedData$(storageSlot&)
|
a2$ = vWatchReceivedData$(storageSlot&)
|
||||||
_CONSOLE ON: _ECHO "Current data: " + a2$
|
_CONSOLE ON: _ECHO "Current data: " + a2$
|
||||||
|
ELSE
|
||||||
|
_CONSOLE ON: _ECHO "Couldn't find storage slot"
|
||||||
END IF
|
END IF
|
||||||
IF INSTR(varType$, "STRING") THEN
|
IF INSTR(varType$, "STRING") THEN
|
||||||
thisWidth = idewx - 20
|
thisWidth = idewx - 20
|
||||||
|
@ -8295,14 +8300,9 @@ FUNCTION idevariablewatchbox$(currentScope$, filter$, selectVar, returnAction)
|
||||||
|
|
||||||
IF mCLICK AND focus = 2 THEN 'list click
|
IF mCLICK AND focus = 2 THEN 'list click
|
||||||
IF timeElapsedSince(lastClick!) < .3 AND clickedItem = o(varListBox).sel THEN
|
IF timeElapsedSince(lastClick!) < .3 AND clickedItem = o(varListBox).sel THEN
|
||||||
_CONSOLE ON: _ECHO "Double-click on list"
|
|
||||||
_ECHO "mX =" + STR$(mX)
|
|
||||||
_ECHO "p.x + doubleClickThreshold =" + STR$(p.x + doubleClickThreshold)
|
|
||||||
IF mX < p.x + doubleClickThreshold OR IdeDebugMode = 0 THEN
|
IF mX < p.x + doubleClickThreshold OR IdeDebugMode = 0 THEN
|
||||||
_CONSOLE ON: _ECHO "Will toggle"
|
|
||||||
GOTO toggleWatch
|
GOTO toggleWatch
|
||||||
ELSE
|
ELSE
|
||||||
_CONSOLE ON: _ECHO "Will send value"
|
|
||||||
GOTO sendValue
|
GOTO sendValue
|
||||||
END IF
|
END IF
|
||||||
END IF
|
END IF
|
||||||
|
|
Loading…
Reference in a new issue