Главное, что все работает, а вот как работает - волновать должно только меня и человека попросившего код для “посмотреть”))
В поиске автоматического нажатия кнопки по истечении заданного времени (тамаут) нашёл примеры как с ручным, так и автоматическим подсчётом через timer.Tick += new EventHandler(timer_Tick); а также:
private async void button1_Click(object sender, EventArgs e)
{
button1.Text = "Stop";
await Task.Delay(5000);
button1.Text = "Start";
}
Удобнее сразу отображать таймер (“Yes (29)”), хотя главное, чтобы после нажатия пользователя тригер повторно не срабатывал, так что оба варианта подходят, а вот третьего (и кажется более простого) в Справке пока нет.
Вопрос: как можно вынести обработчик для всех таких кнопок с автозавершением по таймауту, чтобы не дублировать код десятки раз?
Кроме того, не понял момент с примером через побитовое округление, как подобное реализуется на Pascal Abc . Net ?
Спасибо.
Лучше через enumerate или как ещё можно упростить задачу поиска и удаления дубликатов по размеру файлов в текущем каталоге?
uses System.IO;
begin
var xList := new HashSet<cardinal>; //список размеров
var sz: cardinal := 0; //размер текущего файла
foreach var xfile in Directory.GetFiles(Directory.GetCurrentDirectory, '*.xls', SearchOption.TopDirectoryOnly) do
begin
//writeln(xfile);
var xpointer := new FileInfo(xfile);//обрабатываемый файл
sz := xpointer.Length;//размер
if xList.contains(sz) then xpointer.delete else xList.add(sz)
//удалить дубликат или запомнить новый размер
end;
//xlist := nil;
Write('.'); Readln;
end.
Или уже нормально?
Верно ли я понял, что в задаче о зёрнах на шахматной доске генерация последовательности будет занимать N элементов типа BigInteger ? Как правильно задать прогрессию и какие преимущества перед традиционными циклами?
Спасибо.
Вероятно, уже знаете, что иногда контекстная справка по F1 кидает на несуществующую страницу Msdn .
Какой прогрессии, какими циклами?
begin
Println(BigInteger(2) ** 64 - 1) //18446744073709551615
end.
Спасибо, Александр. Я как раз распечатал Часть5, но снова забыл, что в Pascal Abc . Net есть нормальная степень.
Понятно, что в последовательностях хранится только “формула”, которая рассчитывается лишь при итоговом вызове, а вот какие преимущества SeqGen(64, BigInteger(1), x -> x *2) и можно ли сразу удваивать и складывать результат как по классике:
begin
var t: BigInteger := 1; //общая сумма
var x: BigInteger := 1; //текущее удвоение
loop 63 do // for var n := 2 to 64 do
begin
x := x * 2;
t := t + x;
Println('+', x, '=', t)
end;
//Println(BigInteger(2) ** 64 - 1)
end.
Спасибо.
Можете вот так написать, если хотите использовать последовательность:
begin
var t: BigInteger := 0; //общая сумма
foreach var x in SeqGen(64, BigInteger(1), x -> x * 2) do
begin
t += x;
Println('+', x, '=', t)
end
end.
Преимуществ каких-то тут я не вижу. Если говорить об использовании последовательности, в данном случае она не улучшает наглядности алгоритма и не упрощает его. Если бы для BigInteger была определена операция Sum и не был нужен промежуточный вывод, отпала необходимость в цикле и последовательность дала бы большую наглядность. Но в любом случае налицо сумма прогрессии и правильнее воспользоваться формулой суммы, если не нужны промежуточные результаты.
Я не понял, в какой “классике” можно сразу удваивать и складывать? У Вас в алгоритме два явных присваивания: для x и t. Поскольку в Паскале операция присваивания не возвращает результата, она не может быть операндом выражения, как например в С++.
-
Как в проекте вывод progressBar1 привязать к индикации на Панели задач Windows 7 и новее?
-
Как исправить ошибку:
procedure Form1.button1_Click(sender: Object; e: EventArgs);
begin
progressBar1.Value:=int(random(100));
// Невозможно явно преобразовать тип integer к типу System.Random
end;
Это классика
Напишите так:
progressBar1.Value:=int(PABCSystem.random(100));
PABCSystem. - это зачем?
Почему-то в оконных приложениях не виден random
. Только с указанием модуля работает.
Во гад! В своих пуляет! А если в uses явно указать - тоже не видит?
Требует обращения по имени и отчеству!
Мож эта… фтопку?
Да куда ж мы без рандома в 21 веке?
Я про MS Forms )))
Так пока хорошей альтернативы в PascalABC.NET нет… А, скажем, детям нужно проектик сделать, чтобы не в текстовом виде.
Дело не в WinForms, а в строке uses System. В текущем пространстве имен оказывается два Random.
А эффект матрешки пока еще в issures. Понял.
Не понял. Какой эффект матрёшки? В каких issures?
В этой. Вроде же в обсуждении рабочий термин с матрешкой (вложенностью пространств имен) не вызывал неприятия)