Ест любую дрянь (в т.ч. бинарники) с расширением .epasadmin писал(а):2. Доработан импорт расширений в базу. В случае, если в базе есть модуль с таким же именем или в нем есть действие с таким же идентификатором действия или названием функции, программа предлагает заменить старый модуль на новый. Добавлена возможность импорта расширений в базу путем перетаскивания файла в главное окно программы.
Лучше бы читались архивы, было бы универсальнее (имхо).
admin писал(а):4. Программа теперь сохраняет в базе время последнего сохранения проекта. Если проект был изменен другим экземпляром программы, в текущей программе попытка изменения или сохранения проекта будет невозможна. Это сделано с одной целью - защитить проект от случайного искажения проекта и потери данных, когда пользователь работает с одной и той же базой в нескольких экземплярах программы, запустив их случайно или преднамеренно.
Супер! Только "наоборот". По всем канонам экземпляр БД открытый ранее не должен давать выйти в дизайнер второму, либо разрешать но с предупреждением о доступе "только на чтение". Atom-ы Windows могли бы решить эту проблему (имхо)...
admin писал(а):5. В дизайнере компоненты отображают свое имя, кроме списка и некоторых других компонентов.

admin писал(а):9. При быстром добавлении полей, надписи выравниваются по центру слева от компонента. Надпись заметки и изображения смещается на 3 пикселя относительно верхнего края компонента.
Отлично! Не хватает только вертикального шага сетки равного 2-м пикселям (вместо 3-х), чтобы навсегда отпал вопрос "сетки" (имхо).
admin писал(а):13. Нажатие Enter больше не закрывает окно редактирования. Для закрытия окна с сохранением изменений используется комбинация Ctrl+Enter.
Замечательно! Осталось Enter на переход в полях завязать (имхо).
admin писал(а):14. Убрал старые форматы изображений из диалогов открытия/сохранения изображений: pcx, tgs, psd.
Волшебно! Из половины поддерживаемых TdbImage форматов вместо их добавления исключено еще 3... Теперь наконец выкину "устаревшие" файлы Adobe Photoshop (*.psd) из базы за ненадобностью (вернее - невозможностью их выбора).
admin писал(а):16. Добавлено в АПИ: ..EncodeUrlElement, DecodeUrlElement.
Ну, пусть еще тогда будет:
Код: Выделить всё
function EncodeURL(s:string):string;
var
i: integer;
begin
Result := '';
for i := 1 to Length(s) do
if Pos(s[i],
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'+
'0123456789;,/?:@&=+$-_.!~*''()#')>0 then
Result := Result + s[i] else
Result := Result + '%' + IntToHex(Ord(s[i]), 2);
end;
Код: Выделить всё
function DecodeUrl(url: string): string;
var
x: integer;
ch: string;
sVal: string;
Buff: string;
begin
Buff := '';
x := 1;
while x <= Length(url) do
begin
ch := url[x];
if ch = '+' then
Buff := Buff + ' '
else if ch <> '%' then
Buff := Buff + ch
else
begin
sVal := Copy(url, x + 1, 2);
Buff := Buff + chr(StrToInt('$' + sVal));
x := x + 2;
end;
Inc(x);
end;
Result := Buff;
end;