-
MY PROJECTS
-
Recent Posts
- 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 ?
- SQL.What is eventual consistency ?
- SQL.What is CDC (Change Data Capture)? ?
- SQL.If i should write a little operations of income and outome of client from kafka and then show them big reports, what should i do ? Shouldnt it be the one db to not to write to both OLTP and OLAP databases ?
- SQL.What is OLTP, OLAP ?
- SQL.What is full scan / index scan ?
- SQL.How DBMS chooses the plan ?
- SQL.JoinExamples
- SQL.What are join algos ?
- SQL.What is the problem in using null in in operator ?
- SQL.How does the relational model differ from object-oriented models, and why does this matter for backend development?
- SQL.What guarantees does the relational model provide, and what does SQL not guarantee?
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. Алгоритмы. DFS. Поиск в глубину рекурсивно
Своими словами. Берем первую вершину, смотрим, нет ли у нее инцидентных ребер (прямых потомков), если есть помечаем, повторяем процедуру для найденной вершины, и так до конца глубины. Возвращаемся, идем к соседней вершине, и так далее. interface
|
1 2 |
var IsVisitedGlobal:array [1..N] of boolean; |
init visited array … Continue reading
Delphi. Алгоритмы. BFS – обход графа в ширину
Теория хорошо описана на Вики. Суть в этой гифке ниже. Моя скромная реализация для представления графа в виде матрицы смежности. Ноль в матрице смежности означает отсутствие ребра между вершинами. Единица – наличие. В основе обхода в ширину – такая … Continue reading
Delphi.DBTreeView. Алгоритм динамического обновления узлов
Пусть есть TreeView, связанное с базой данных, например MySQL. Необходимо сделать так, чтобы данные загружались только при первоначальном заполнении (idParent=-1) либо при раскрытии узла (OnExpanding). Данный алгоритм хорош тем, что не грузит сразу все данные. И если, скажем, дерево большое, … Continue reading
Delphi. DBTreeView. Самый эффективный алгоритм удаления узлов из дерева, связанного с базой данных
-пусть есть TreeView, соединенный с базой, скажем MySQL -пусть мы хотим удалить выделенный узел TreeView из базы данных и из дерева Алгоритм (пока что №1 в моем рейтинге) -собрать ID всех детей (рекурсивно), хранящиеся по указателю каждого узла дерева SomeNode.Data … Continue reading
Delphi. Алгоритмы. Галерея своими руками или как выложить плитками фрэйм
Давно хотел записать это, так как часто пригождается, думаю транслировать на другие языки не составит труда. Итак, вот что у нас получится… Я пока не стал выкладывать никакие картинки, просто хочу здесь описать саму логику алгоритма. Сам алгоритм я взял … Continue reading
Delphi. Алгоритмы. Создание уникального имени через добавление номера в конце в скобках. Например SomeFile(1), SomeFile(2) и др.
Итак, пусть у нас в некоторой директории находится файл SomeFile, сделаем так, чтобы при добавлении следующего файла с именем SomeFile, в директории оказался файл SomeFile(1), SomeFile(2), SomeFile(3). При отсутствии этого файла в директорию копируется просто файл. Данная задача возникла в … 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. Алгоритмы. Как заменить имя файла на уникальное ?
Скажем, у нас есть имя файла в формате Filename.jpg в переменной FileName. Далее код на уровне идеи… Вариант 1 через GUID
|
1 2 3 4 5 6 |
var newguid:tguid; ... //Генерируем уникальный guid Createguid(newguid); newUniqueName:=newguid.ToString; ... |
Вот пример такого изменения. Сохраняем часть старого имени для читабельности и добавляем GUID
|
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 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
{Creating New Unique Name with a rest of old name, using GUID} function CreateUniqueNameAddingGUID(FileName: string; MaxOriginNameLength: Integer): string; var Extension:string; SplittedString: TArray<String>; SomeStringToChange: string; newguid:tguid; i: Integer; FileNameTemp:string; begin //Checks if FileName='' then Exit; //if MaxOriginNameLength=0 then exit; // if MaxOriginNameLength=0 will be only GUID as a result //1--------- First of all we need to extract extension if it is SplittedString:=FileName.Split(['.']); //we suppose that extensions are symbols after last '.', so... // if FileName has extension like 'SomeFileName.exe' if Length(SplittedString)>0 //1 and more, for example somename.ext [somename,ext] then begin Extension:=SplittedString[ High(SplittedString) ]; //Lets join everything except extension for i := Low(SplittedString) to High(SplittedString)-1 do begin if i=0 then SomeStringToChange:=SomeStringToChange+SplittedString[i] else SomeStringToChange:=SomeStringToChange+'.'+SplittedString[i]; end; //Cutting name up to the MaxOriginNameLength if Length( SomeStringToChange )> MaxOriginNameLength then SomeStringToChange:=SomeStringToChange.Substring(0,MaxOriginNameLength); //Adding GUID Createguid(newguid); SomeStringToChange:=SomeStringToChange+newguid.ToString; // Joining Extension SomeStringToChange:=SomeStringToChange+'.'+Extension; Result:=SomeStringToChange; end else // if FileName without Extension like 'SomeFileName' if Length(SplittedString)=0 then begin FileNameTemp:=FileName; //Cutting name up to the MaxOriginNameLength if Length( FileNameTemp )> MaxOriginNameLength then FileNameTemp:=FileNameTemp.Substring(0,MaxOriginNameLength); //Adding GUID Createguid(newguid); FileNameTemp:=FileNameTemp+newguid.ToString; Result:=FileNameTemp; end; //ShowMessage(Result); end; |
Вариант 2 через Random … Continue reading
Алгоритмы. Вход в личный кабинет. Поправки
Век живи, век учись! И самое главное, когда чувствуешь, что что-то не так, не нужно себя обманывать, чем быстрее осознаешь проблему, тем быстрее её решишь. В одном из предыдущих постов, я написал простой алгоритм входа в личный кабинет, но всегда … Continue reading