mirror of
https://github.com/QB64Official/qb64.git
synced 2024-08-22 11:25:08 +00:00
117 lines
3.3 KiB
QBasic
117 lines
3.3 KiB
QBasic
''' String manipulation functions
|
|
FUNCTION StrRemove$ (myString$, whatToRemove$) ' noncase sensitive
|
|
DIM a$, b$
|
|
DIM AS LONG i
|
|
a$ = myString$
|
|
b$ = LCASE$(whatToRemove$)
|
|
i = INSTR(LCASE$(a$), b$)
|
|
DO WHILE i
|
|
a$ = LEFT$(a$, i - 1) + RIGHT$(a$, LEN(a$) - i - LEN(b$) + 1)
|
|
i = INSTR(LCASE$(a$), b$)
|
|
LOOP
|
|
StrRemove$ = a$
|
|
END FUNCTION
|
|
|
|
FUNCTION StrReplace$ (myString$, find$, replaceWith$) ' noncase sensitive
|
|
DIM a$, b$
|
|
DIM AS LONG basei, i
|
|
IF LEN(myString$) = 0 THEN EXIT FUNCTION
|
|
a$ = myString$
|
|
b$ = LCASE$(find$)
|
|
basei = 1
|
|
i = INSTR(basei, LCASE$(a$), b$)
|
|
DO WHILE i
|
|
a$ = LEFT$(a$, i - 1) + replaceWith$ + RIGHT$(a$, LEN(a$) - i - LEN(b$) + 1)
|
|
basei = i + LEN(replaceWith$)
|
|
i = INSTR(basei, LCASE$(a$), b$)
|
|
LOOP
|
|
StrReplace$ = a$
|
|
END FUNCTION
|
|
|
|
FUNCTION AddQuotes$ (s$)
|
|
AddQuotes$ = CHR$(34) + s$ + CHR$(34)
|
|
END FUNCTION
|
|
|
|
' Convert a boolean value to 'True' or 'False'.
|
|
FUNCTION BoolToTFString$ (b AS LONG)
|
|
IF b THEN
|
|
BoolToTFString$ = "True"
|
|
ELSE
|
|
BoolToTFString$ = "False"
|
|
END IF
|
|
END FUNCTION
|
|
|
|
' Convert 'True' or 'False' to a boolean value.
|
|
' Any string not 'True' or 'False' is returned as -2.
|
|
FUNCTION TFStringToBool% (s AS STRING)
|
|
DIM s2 AS STRING
|
|
s2 = _TRIM$(UCASE$(s))
|
|
IF s2 = "TRUE" THEN
|
|
TFStringToBool% = -1
|
|
ELSEIF s2 = "FALSE" THEN
|
|
TFStringToBool% = 0
|
|
ELSE
|
|
TFStringToBool% = -2
|
|
END IF
|
|
END FUNCTION
|
|
|
|
''' Reads the bool setting at section:setting.
|
|
''' If it is not there or invalid, writes the default value to it.
|
|
FUNCTION ReadWriteBooleanSettingValue% (section AS STRING, setting AS STRING, default AS INTEGER)
|
|
|
|
DIM checkResult AS INTEGER
|
|
DIM value AS STRING
|
|
DIM result AS INTEGER
|
|
|
|
result = ReadConfigSetting(section, setting, value)
|
|
|
|
checkResult = TFStringToBool%(value)
|
|
|
|
IF checkResult = -2 THEN
|
|
WriteConfigSetting section, setting, BoolToTFString$(default)
|
|
ReadWriteBooleanSettingValue% = default
|
|
ELSE
|
|
ReadWriteBooleanSettingValue% = checkResult
|
|
END IF
|
|
|
|
END FUNCTION
|
|
|
|
''' Reads the string setting at section:setting.
|
|
''' If it is not there or invalid, writes the default value to it.
|
|
FUNCTION ReadWriteStringSettingValue$ (section AS STRING, setting AS STRING, default AS STRING)
|
|
|
|
DIM value AS STRING
|
|
DIM result AS INTEGER
|
|
|
|
result = ReadConfigSetting(section, setting, value)
|
|
|
|
IF result = 0 THEN
|
|
WriteConfigSetting section, setting, default
|
|
ReadWriteStringSettingValue$ = default
|
|
ELSE
|
|
ReadWriteStringSettingValue$ = value
|
|
END IF
|
|
|
|
END FUNCTION
|
|
|
|
''' Reads the integer setting at section:setting.
|
|
''' If it is not there or invalid, writes the default value to it.
|
|
''' Verifies the value is positive and non-zero.
|
|
FUNCTION ReadWriteLongSettingValue& (section AS STRING, setting AS STRING, default AS LONG)
|
|
|
|
DIM value AS STRING
|
|
DIM result AS INTEGER
|
|
DIM checkResult AS LONG
|
|
|
|
result = ReadConfigSetting(section, setting, value)
|
|
|
|
checkResult = VAL(value)
|
|
|
|
IF result = 0 OR checkResult <= 0 THEN
|
|
WriteConfigSetting section, setting, str2$(default)
|
|
ReadWriteLongSettingValue& = default
|
|
ELSE
|
|
ReadWriteLongSettingValue& = checkResult
|
|
END IF
|
|
|
|
END FUNCTION
|