Lazarus, поддержка русских букв в консоли (Windows 7)

Из коробки русские буквы в консоли поддерживаются через жопу:

Это потому что Lazarus по умолчанию создает файл в UTF8, а консоль Windows 7 поддерживает CP 866 (кодировку DOS/OEM), достаточно перекодировать файл:

1. Щелкаем по пустому месту в исходнике в редакторе.

2. Выбираем Параметры файла —> Кодировка

3. В выпадающем списке выбираем CP866:

4. В появившемся окне нажимаем кнопку Изменить файл:

5. ФАНФАРЫ!

Источник
Тестовый пример на GitHub

Lazarus, регулярные выражения.

Из коробки доступен мощный класс TRegExpr, вполне себе работает с регулярками. Сожрал даже C#-овскую, без изменения синтаксиса вообще. Пример регулярки для обнаружения русских букв:

program regexptest;
uses regexpr;
var  Regex:TRegExpr;

begin
     Regex:=TRegExpr.Create;
     Regex.Expression:='[а-я]|\s';
     Writeln(Regex.Exec('АБВГ'));
     Writeln(Regex.Exec('ABCD'));
     ReadLn();
end.

Документация
Пример на Киберфоруме

Этот пример на GitHub

UPD: Более лучшая регулярка для поиска кириллицы (и пробела).

[А-Я]|[а-я]|\s

Первая ([а-я]|\s) нормально работает, если формат файла исходника UTF-8, и текст в UTF-8, а вот с консолью в Win7 она работает только на строчных буквах, на заглавных не работает. А консоль требует CP866.

О других косяках кириллицы в консоли — в следующих выпусках нашего журнала.

Lazarus, список каталогов с подкаталогами

Плохо, что по маске не умеет каталоги искать. А в остальном все просто.

program alldirs;
uses Classes, SysUtils, FileUtil;
var
   lstDirs:TStringList;
   i: Integer;
begin
     lstDirs := TStringList.Create;
     FindAllDirectories(lstDirs,'C:\Windows',true);
     i:=0;
     while i < lstDirs.Count do begin
       WriteLn(lstDirs[i]);
       inc(i);
     end;
     WriteLn ('Found: ',lstDirs.Count);
     WriteLn ('Press Enter');
     lstDirs.Free();
     ReadLn();
end.

Ссылка на GitHub

Поигрался с Freepascal/Lazarus

Больше по служебной необходимости, и воле случая, чем по собственному желанию.
Инет отсутствовал, компы нормальные все заболели, а утилиту писать надо. Ще було, на том и писали.

Поиск файла

Наконец-то нормальный поиск файла, где маска файла работает как надо (как в DOS) и не принимает, например, расширение *.htm и *.html за одно и то же. C# мне не удалось этому очевидному решению научить, конечно, можно потом по выборке прогнать регулярное выражение, но оно тоже плохо срабатывает, упускает некоторые случаи, например, если имя файла начинается с расширения (т.е. на файл .html оно не сработает):

В Lazarus все работает из коробки:

program testfind;
uses Classes, SysUtils, FileUtil;
var
   lstFiles:TStringList;
   i: Integer;
begin
     lstFiles := TStringList.Create;
     FindAllFiles(lstFiles, 'C:\Temp\Test', '*.htm', true);
     i:=0;
     while i < lstFiles.Count do begin
       WriteLn(lstFiles[i]);
       inc(i);
     end;
     WriteLn ('Found: ',lstFiles.Count);
     WriteLn ('Press Enter');
     ReadLn();
     lstFiles.Free();
end.

Пример и каталог с тестовыми файлами на GitHub

UPD: Ссылка на мануал

Небольшая коллекция игр на Flash

cutiequake — Битва с яйцами.
egg_fighter — Битва с яйцами, еще одна версия.
gopher_war — Убей суслика
NURSING — Будни работника соцзащиты, замочи пенсирнеров, пока они не замочили тебя.
office_war — кидаемся в офисе друг в друга документами
Spearbritney — Надо убить Бритни Спирс, проткнув ее.
xiaoxiao9 — файтинг
L4 — Маньяк-инопланетянин жжет людей через лупу, как муравьев.

Скачать с Mega.NZ (SWF+EXE) RAR