Есть функция FreeRegularExpression(), но во многих примерах она не используется, так как в справке написано, что при закрытии все открытые освобождаются автоматически. Но интересует если использовать рег.выр. на тот же самый, будем называть дескриптор, допустим 0, предыдущий надо закрывать или он закроется автоматически?
Вот пример
If FindString(sMask, "**") And CreateRegularExpression(0, "\*+") ; проверка дублирования множества sMask = ReplaceRegularExpression(0, sMask, "*") EndIf If CreateRegularExpression(0, "[\s|.]+\|") And MatchRegularExpression(0, sMask + "|") ; запрет пробела и разделителя слева от разделителя sMask = ReplaceRegularExpression(0, sMask + "|", "|") EndIf
Я не закрывая использую 0 второй раз. Понятно что вставить строку не трудно, но бывает так, что для закрытия требуется усложнять код.
Понятно что совместно нельзя использовать, но задача переписать на тот же дескриптор новые данные не заботясь о старом, так как он уже не нужен.
Сейчас подумал, что тот же вариант для файла использует скорее всего WinAPI и если сам автор не прописал проверку открытого дескриптора, чтобы его закрыть, то скорее всего он останется висеть неучтённым в PureBasic.
Отредактировано AZJIO (18.02.2021 20:21:56)