-
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. Как загрузить сайт для парсинга?
Наверное, самый простой способ загрузить сайт для парсинга это компонент TIdHTTP и его метод Get. Если открыть официальную документацию компонентов Indy, то можно увидеть следующее описание метода Get, компонента TidHTTP
|
1 2 3 |
function Get( AURL: string ): string; overload; |
И ещё одна его перегруженная версия, которая грузит сайт в … Continue reading
Posted in Delphi, Delphi и сети, Без рубрики
Comments Off on Delphi. Как загрузить сайт для парсинга?
Регулярные выражения. Практика
В прошлом посте я разбирался с теорией, сейчас попробую попрактиковаться в Delphi с разными примерами из разных блогов. Элементарно
|
1 2 3 4 5 6 7 8 9 10 |
//uses RegularExpressions ... procedure TForm.Button1Click(Sender: TObject); var RegEx: TRegEx; begin RegEx := TRegEx.Create('Hello');// Определяем то, что ищем, собственно регулярное выражение //Далее определяем текст, в котором ищем if RegEx.IsMatch('Hello world') then Caption := 'match'; end; |
Теперь тоже самое, но с использованием метасимволов
|
1 2 3 4 5 6 7 8 |
procedure TForm.ButtonClick(Sender: TObject); var RegEx:TRegEx; begin RegEx := TRegEx.Create('^H[\w]+o\b'); if RegEx.IsMatch('Hello world') then form.Caption := 'match'; end; |
Что написано в последнем коде? Разберем регулярное выражение
Posted in Delphi, Без рубрики, Регулярные выражения
Comments Off on Регулярные выражения. Практика
Регулярные выражения.Теория
Заинтересовался темой регулярных выражений. Серию постов про регулярные выражения, пишу для себя, чтобы разобраться и систематизировать информацию. Но если для Вас пост окажется полезным – буду рад. Зачем? Насколько я понимаю – для того, чтобы минимальным количеством кода находить информацию в тексте. … Continue reading
Posted in Delphi, Без рубрики, Регулярные выражения
Comments Off on Регулярные выражения.Теория
Как подключиться к удаленной БД MySQL и открыть другую форму после успешного подключения?
Что делаем? Пишем программу, которая открывает 2 форму, после успешного подключения к БД. Пишем в Delphi FireMonkey HD Application Исходные компоненты 1 форма – главная, откроется после успешного подключения
Работа с дисками, папками, файлами. Обзор System.IOUtils
uses System.IOUtils Список и размер дисков
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
procedure TForm1.bGetDisksClick(Sender: TObject); var SDA:TStringDynArray; i:integer; begin Combobox1.Clear; SDA:=Tdirectory.GetLogicalDrives; for i := 0 to High(SDA) do Combobox1.Items.Add(SDA[i]); Combobox1.ItemIndex:=0; end; //Размер диска (на примере диска С это номер 3 функции DiskSize) //Выводим в ListBox ListBox1.Clear; ListBox1.Items.Add( inttostr( DiskSize(3))+' bytes' ) ; |
Сбор сведений о каталогах и файлах
|
1 2 3 4 5 6 7 8 9 |
procedure TForm1.GetDirsAndFilesClick(Sender: TObject); var SDA:TStringDynArray; i:integer; begin SDA:=TDirectory.GetFileSystemEntries('C:\','*.*'); ListBox1.Clear; for i := 0 to High(SDA) do ListBox1.Items.Add(SDA[i]); end; {Также полезные функции GetFiles и GetDirectories} |
Posted in Delphi, FireMonkey, Без рубрики
Comments Off on Работа с дисками, папками, файлами. Обзор System.IOUtils
TAction simple example (Copy Cut Paste)
На форме FireMonkey – Memo, ActionList, MainMenu В ActionList добавим 3 элемента acCopy acCut acPaste Напишем обработчики для элементов ActionList
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
procedure TForm1.acCopyExecute(Sender: TObject); begin Memo.CopyToClipboard; end; procedure TForm1.acCutExecute(Sender: TObject); begin Memo.CutToClipboard; end; procedure TForm1.acPasteExecute(Sender: TObject); begin Memo.PasteFromClipboard; end; |
Далее – актуализируем через Update
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
procedure TForm1.acCopyUpdate(Sender: TObject); begin acCopy.Enabled := (Memo.SelLength>0); end; procedure TForm1.acCutUpdate(Sender: TObject); begin acCut.Enabled:=(Memo.SelLength>0) end; procedure TForm1.acPasteUpdate(Sender: TObject); var Clip:IFMXClipboardService; s:string; begin if TPlatformServices.Current.SupportsPlatformService(IFMXClipboardService,IInterface(Clip)) then begin s:=Clip.GetClipboard.ToString; acPaste.Enabled:=s.Length>0 end else acPaste.Enabled:=false; end; |
Posted in Delphi, FireMonkey
Comments Off on TAction simple example (Copy Cut Paste)
PopupMenu
Самый простой способ подключить TPopupMenu – воспользоваться свойством PopupMenu. На рис. ниже пример для компонента TImage Но, к сожалению не у всех компонентов есть это свойство, например, его нет у TForm. Если у компонента нет свойства Popup, то можно подключить … Continue reading
Posted in Delphi, FireMonkey, Без рубрики
Comments Off on PopupMenu
Ресурсы
Зачем нужны ресурсы? Чтобы защитить нужные файлы от изменений, скрыть от пользователя. И также, насколько я понимаю, если проводить аналогию с физическим миром это что-то вроде склада, где по отдельному идентификатору можно вызвать то или иное изображение, видео или другой … Continue reading
Posted in Delphi, FireMonkey
Comments Off on Ресурсы
Delphi. Программа-шутка
Вместо закрытия создает новые окна самой себя
|
1 2 3 4 5 6 |
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin Action:=TCloseAction.caNone; with TForm1.Create(Application) do show(); Form1.Caption:='joke'; end; |
Posted in Delphi, Без рубрики
Comments Off on Delphi. Программа-шутка
MessageDlg – запрос сохранения данных в Memo
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
var textModified:boolean; procedure TForm2.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin if textModified then case MessageDlg('Сохранить изменения в тексте',TMsgDlgType.mtConfirmation, [tMsgDlgBtn.mbYes]+[tMsgDlgBtn.mbNo]+[tMsgDlgBtn.mbCancel],-1) of mrYes: memo1.Lines.SaveToFile('saved.txt'); mrNO: CanClose:=true; mrCancel: CanClose:=true; end end; |
Posted in Delphi, FireMonkey, Без рубрики
Comments Off on MessageDlg – запрос сохранения данных в Memo