-
MY PROJECTS
-
Recent Posts
- SQL.How can you compare two nullable values safely, and how does IS DISTINCT FROM differ from <>?
- SQL.How are NULL values ordered by ORDER BY, how do defaults differ between databases, and how can you control their placement?
- SQL.How does NULL propagate through arithmetic expressions, and how can COALESCE and NULLIF help handle missing values and division by zero?
- SQL.How does NULL affect join conditions, and why can filtering the right-hand table in WHERE remove unmatched rows from a LEFT JOIN?
- SQL.How do GROUP BY and DISTINCT treat NULL values, even though NULL = NULL evaluates to UNKNOWN?
- SQL.How do aggregate functions handle NULL, and what is the difference between COUNT(*), COUNT(column), and COUNT(DISTINCT column)?
- SQL.How does NULL affect IN and NOT IN, and why can NOT EXISTS be a safer choice when a subquery returns nullable values?
- SQL.How do WHERE, HAVING, and CHECK constraints treat conditions that evaluate to UNKNOWN?
- SQL.Why do column = NULL and column <> NULL not work as expected, and when should you use IS NULL and IS NOT NULL?
- SQL.What is SQL’s three-valued logic (TRUE, FALSE, UNKNOWN), and how do AND, OR, and NOT behave with UNKNOWN?
- ChromeDevTools.Watch all failed requests
- SQL.What are domain types (or constraints on data types), and how do they help enforce data correctness?
- SQL.How does SQL handle comparisons between different data types (for example, string vs number), and why is this dangerous?
- SQL.What is the difference between DATE, TIME, TIMESTAMP, and TIMESTAMPTZ, and which one should be used for business events?
- SQL.How do numeric types like INTEGER, BIGINT, DECIMAL, and FLOAT differ in terms of precision and use cases?
- SQL.What problems can arise from implicit type casting in SQL, and how can it affect indexes?
- SQL.How does NULL differ from 0, an empty string, or FALSE in SQL?
- SQL.What is the difference between CHAR, VARCHAR, and TEXT, and when would you choose each?
- SQL.What is MVCC ?
- SQL.What is AutoVacuum Postgres ?
Categories
- Aptana
- Azure
- C#
- DataSnap
- DBExpress
- Delphi
- Delphi и сети
- Delphi. Язык программирования
- ExtJS
- FastReport
- FireDAC
- FireMonkey
- GIT
- ICS
- IDE
- IIS
- Indy
- InnoSetup
- javascript
- jQuery
- JSON
- LiveBindings
- MSHTML
- MySQL
- PHP
- REST
- Ribbons
- SMS
- SQL инструкции
- SVN
- TRichView
- UniGui
- WebBroker
- WinAPI
- Windows
- Алгоритмы
- Без рубрики
- Деревья
- Ищу ответ
- Компонентостроение
- Мои компоненты
- Начальный уровень
- Обработка исключений
- Парсинг
- Потоки(Threads)
- Регулярные выражения
- Тестирование приложений
Category Archives: Delphi
Delphi. FireMonkey. Первое приложение под Android – “Позвони маме”
В Delphi, насколько я вижу, под Android можно писать на Firemonkey – и тогда мы получим нативное приложение. А можно писать при помощи UniGUI фрэймворка и тогда мы получим приложение работающее через браузер, основанное на популярной библиотеке jQueryMobile. Плюс первого … Continue reading
Posted in Delphi, FireMonkey, Без рубрики
Comments Off on Delphi. FireMonkey. Первое приложение под Android – “Позвони маме”
Delphi. idFTP. Рекурсивные обходы каталогов сервера
Как собрать все файлы из определенной директории и всех её поддиректорий? Вариант 1 Соберем имена файлов, кроме папок из определенной директории на FTP сервере при помощи компонента idFTP
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
//Recursive listing of files... procedure TVisualFrame_PSFTPClient.ListAllFilesCore(dir:string); var DL: TStringList; i: Integer; begin DL:=TStringList.Create; try IdFTP.ChangeDir(Dir); IdFTP.List(DL, '', false); // <<<Listed all files and folders here... for i:=0 to DL.Count-1 do begin if IdFTP.Size(dl.Strings[i])=-1 then // If Folder then... ListAllFilesCore(dl.Strings[i]) //Recursion here... else FFilesOnServerAll.Add(DL.Strings[i]); end; IdFTP.ChangeDirUp; IdFTP.List(DL, '', false); // << Critical important !!! finally FreeAndNil(DL); end; end; |
И вторая процедура, которая собственно подключается к серверу и собирает файлы…
Delphi. Установка и использование написанных компонентов
Как организовать удобную структуру для хранения и переноса своих программ и компонентов? Пока не нашел ответа на этот вопрос. Это короткая заметка об использовании компонентов после их создания. Я обычно делаю компонент и тестовую программу в соседней, с компонентом папке. … Continue reading
Posted in Delphi
Comments Off on Delphi. Установка и использование написанных компонентов
Delphi. Битовые операции и фильтр Блума. Вступление.
Часто встречается множество булевых параметров, которые нужно хранить в базе. Что-то существует или не существует. Что-то true или false. И когда таких параметров несколько десятков – сложно воспринимать базу. Для этого, как я понял, существуют битовые операции и фильтр Блума. … Continue reading
Posted in Delphi
6 Comments
Delphi.WinAPI. Доступен ли файл для чтения?
Способ № 1 (Рабочий, почти всегда)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
const FILE_READ_DATA = $0001; FILE_WRITE_DATA = $0002; FILE_APPEND_DATA = $0004; FILE_READ_EA = $0008; FILE_WRITE_EA = $0010; FILE_EXECUTE = $0020; FILE_READ_ATTRIBUTES = $0080; FILE_WRITE_ATTRIBUTES = $0100; FILE_GENERIC_READ = (STANDARD_RIGHTS_READ or FILE_READ_DATA or FILE_READ_ATTRIBUTES or FILE_READ_EA or SYNCHRONIZE); FILE_GENERIC_WRITE = (STANDARD_RIGHTS_WRITE or FILE_WRITE_DATA or FILE_WRITE_ATTRIBUTES or FILE_WRITE_EA or FILE_APPEND_DATA or SYNCHRONIZE); FILE_GENERIC_EXECUTE = (STANDARD_RIGHTS_EXECUTE or FILE_READ_ATTRIBUTES or FILE_EXECUTE or SYNCHRONIZE); FILE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED or SYNCHRONIZE or $1FF; |
|
1 2 3 4 5 6 |
function TfMain.IsFileOKToread(AFilePath:String): Boolean; begin Result:=False; if CheckFileAccess(FilePathConst,FILE_READ_DATA) = FILE_READ_DATA then Result:=True; end; |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
function CheckFileAccess(const FileName: string; const CheckedAccess: Cardinal): Cardinal; var Token: THandle; Status: LongBool; Access: Cardinal; SecDescSize: Cardinal; PrivSetSize: Cardinal; PrivSet: PRIVILEGE_SET; Mapping: GENERIC_MAPPING; SecDesc: PSECURITY_DESCRIPTOR; begin Result := 0; GetFileSecurity ( PChar(Filename), OWNER_SECURITY_INFORMATION or GROUP_SECURITY_INFORMATION or DACL_SECURITY_INFORMATION, nil, 0, SecDescSize ); SecDesc := GetMemory(SecDescSize); if GetFileSecurity ( PChar(Filename), OWNER_SECURITY_INFORMATION or GROUP_SECURITY_INFORMATION or DACL_SECURITY_INFORMATION, SecDesc, SecDescSize, SecDescSize ) then begin ImpersonateSelf(SecurityImpersonation); OpenThreadToken(GetCurrentThread, TOKEN_QUERY, False, Token); if Token <> 0 then begin Mapping.GenericRead := FILE_GENERIC_READ; Mapping.GenericWrite := FILE_GENERIC_WRITE; Mapping.GenericExecute := FILE_GENERIC_EXECUTE; Mapping.GenericAll := FILE_ALL_ACCESS; MapGenericMask(Access, Mapping); PrivSetSize := SizeOf(PrivSet); AccessCheck(SecDesc, Token, CheckedAccess, Mapping, PrivSet, PrivSetSize, Access, Status); CloseHandle(Token); if Status then Result := Access; end; end; FreeMem(SecDesc, SecDescSize); end; |
|
1 2 3 4 5 |
procedure TfMain.bTestClick(Sender: TObject); begin if IsFileOKToread(FilePathConst) then ShowMessage('Ok To Read'); end; |
Способ №2 (Не рабочий, если доступ к файлу закрыт) Данная функция НЕ РАБОТАЕТ, так как нужно проверять атрибуты безопасности файла, насколько я понимаю. Простая проверка возможности прочитать файл. //True – файл … Continue reading
Delphi. Как отсортировать TStringList и сохранить соответствие с несколькими другими TStringList?
Данный пост является развитием предыдущего. Будем сортировать один TStringList -другие же приводить в соответствие с переставленными элементами.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
SLToSort SLToSort BeforeSort AfterSort 0 1 0 3 1 3 1 2 2 2 2 1 ______________________________ SomeSL SomeSL BeforeSort AfterSort 0 1 0 3 1 3 1 0 2 0 2 1 |
Исходные данные у меня точно такие же. Не буду переписывать часть поста сюда.Изменился только алгоритм сортировки, так как теперь в соответствие нужно … Continue reading
Delphi. Сортировка TStringList с приведением в соответствие другого TStringList
Что делаем? Есть у нас некоторый TStringList, скажем SLToSort:TStringlist. Нужно его отсортировать – задача элементарная, пишем компараторы для наших данных, включаем CustomSort и всё готово. А что делать, если кроме SLToSort есть просто SomeSL:TStringlist и после сортировки SLToSort – нужно привести его … Continue reading
Posted in Delphi, Алгоритмы
2 Comments
Delphi. GDI+ vs StretchDraw. Как уменьшить много картинок в потоке и сохранить их на диске?
Встала задача – создать thumbnails для полноформатных изображений. В сети уйма информации, не знал за что хвататься, решил пробовать по очереди. В сущности, попробовал 2 способа более менее подробно, а остальные по верхам. Остановился на стандартном StretchDraw из Delphi, из … Continue reading
Posted in Delphi, Потоки(Threads)
Comments Off on Delphi. GDI+ vs StretchDraw. Как уменьшить много картинок в потоке и сохранить их на диске?
Delphi. TStringList.CustomSort – сортировка строк, integer, tdatetime в ascending и descending порядках
Часто использую TStringList, а вот сортировку в нём не часто. Понадобилась, разобрался, ниже основные моменты по сортировке разных типов, тем или иным путем попавшим в TStringList. Сортировка строк
|
1 |
var FRandomList:TStringList; |
Ascending Вариант 1 (самый популярный, поэтому самый краткий)
|
1 |
FRandomList.Sort |
Все остальные … Continue reading
Posted in Delphi
Comments Off on Delphi. TStringList.CustomSort – сортировка строк, integer, tdatetime в ascending и descending порядках
Delphi. Indy. FTP. Как получить дату создания, изменения и последнего доступа на сервере от idFTP ?
Этот вопрос можно преобразовать в “как преобразовать 20160911195120 в 11.09.2016 19:51:20 и перевести в LocalTime?” Я также поднял этот вопрос на 2 форумах Русский форум Английский форум Также мне показалась интересной ссылка на TTimeZone – класса, который появился, начиная с Delphi … Continue reading