Ну так а что вы закрываете? Вы не указали какой файл закрыть надо, поэтому берёт следующее ближайшее Close
. В контексте формы это закрытие самой формы. А файл так и остался открыт и не сохранён. И затем, при завершении работы программы, освободился до записи содержимого на диск.
Если я ставлю Close(f), то выдает ошибку “Неверное количество параметров процедуры”.
Ну так надо с этим разбираться, а не пытаться делать рандомные изменения, вроде убирания передачи файла который надо закрыть в закрывающую процедуру.
Для начала удостоверьтесь что у вас последняя версия. Обновляться это сюда:
http://pascalabc.net/ssyilki-dlya-skachivaniya
Далее - вставьте код нормально, так чтоб его можно было сразу скопировать, запустить, и увидеть то же поведение что у вас.
И желательно найти минимальный код который будет говорить что не нашёл такую Close
.
Попробуйте CloseFile
Спасибо с CloseFile получилось.
Всем привет! Подскажите, пожалуйста, есть ли встроенная функция для подсчёта количества непересекающихся вхождений подстроки в строку. Например, для подстроки ‘ABA’ и строки ‘ABABA’ возвращающая 1?
Понятно, что можно эту функцию вручную описать с использованием, например, Pos, но мой вопрос как раз в том, есть ли втроенная, готовая функция?
Знаю, что есть метод CountOf для строковых переменных, но он считает только количество вхождений односимвольных строк (или точнее char?) в строку.
Заранее спасибо!
##
var s := 'ABABA';
s.IndicesOf('ABA').Count.Print
Вызов со вторым параметром IndicesOf('ABA', True)
вернет количество вхождений с учетом пересечений. Реализация - КМП-алгоритм, так что эффективно работает и для строк с безумной длиной.
Спасибо! Супер!
Пожалуйста. Еще можно написать регулярное выражение, найти все его вхождения посредством MatchValues и подсчитать их количество. Для коротких строк может оказаться наиболее быстрым решением.
Это верно, что процедура кривая Curve не реализовано в модуле GraphWPF&
Да, верно
С тех времён появилось что-то лучше?
В каком направлении лучше?
К универсальности.
Не появилось. Но не исключено, что появится со временем. Что-то, похожее на калькулятор символьного выражения.
Подскажите пожалуйста, есть-ли процедура или функционал в модуле GraphWPF заменяющее процедуру FloodFill модуля GraphABC?
Можно ли запретить изменение элементов динамического массива в подпрограмме?
##
procedure P(const a: array of integer);
begin
a[0] := 1;
a.Println
end;
var a := |10, 20, 30|;
P(a);
a.Print
Действительно работает. А тут я попробовал в FPC такое сделать, но перед этим задал тип TAi = array if integer и там элементы изменять в подпрограмме было можно. Но если же в подпрограмме указать тип параметра массива как array of integer, то также заработало. Здесь и так и эдак изменять элементы нельзя.