-
MY PROJECTS
-
Recent Posts
- SpringBoot. Exception Management
- Java.Hibernate.JoinTableAnnotation
- SpringBoot.Making our first starter and autoconfiguration
- Spring. Creating main annotation to start business logic
- Spring.Reading from properties file
- Spring.How to define spring version inside springBoot ?
- SpringBoot App inside Docker
- Kafka.FirstExperience
- Docker.MySql and Lost connection to MySQL server at ‘reading initial communication packet’, system error: 0
- Gradle.Tips
- Spring.AppConfig
- Leetcode.Best-time-to-buy-and-sell-stock
- LeetCode.ClimbStairs.Fibbonacci
- Leetcode.Roman-to-integer
- LeetCode.Palindrome-number
- Java.DesignPatterns.Lightweight
- Java.DesignPatterns.Proxy
- Java.DesignPatterns.Facade
- Java.DesignPatterns.Composite
- Java.DesignPatterns.Bridge
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)
- Регулярные выражения
- Тестирование приложений
Monthly Archives: September 2016
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
Delphi. Scrollbox. MousewheelUp and MousewheelDown. Делаем прокрутку разными способами
TScrollBox, Если мы говорим о классе TScrollBox, то наиболее простой и эффективный код – обработать MousewheelUp и MouseWheelDown у компонента ScrollBox, но этого недостаточно, нужно ещё присвоить SetFocus, компоненту ScrollBox, тогда это удовольствие будет работать. Вот простой пример обработки данных … Continue reading
Delphi. Threads. Как обработать исключение из потока?
На форуме нашёл интересный способ обработать исключение из потока.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
TTestThread = class(TThread) private fEx : Exception; procedure QueryError; protected procedure Execute; override; end; procedure TTestThread .Execute; begin inherited; try ... всякое разное ... except fEx := ExceptObject as Exception; Synchronize( QueryError ); end; end; procedure TTestThread .QueryError; begin Application.OnException( Self, fEx ); end; |
Попробовал его в своей программе – и да, оно работает!
Posted in Delphi, Обработка исключений, Потоки(Threads)
Comments Off on Delphi. Threads. Как обработать исключение из потока?
Delphi.Indy. FTP. Активный и пассивный режимы. Мультипоточная загрузка на сервер. Правильная визуализация процесса
В прошлом посте про мультипоточную загрузку я столкнулся с некорректной индикацией процесса загрузки на сервер. Сама загрузка работала для нескольких файлов. А вот визуализация только для 1 файла. Поэтому, приходилось выкручиваться с таймерами. И я бы оставил этот вопрос, если … Continue reading
PHP.JS. Проверка полей на пустоту. Усовершенствуем скрипт авторизации
В прошлом посте сделали простейший PHP скрипт авторизации, сейчас усовершенствуем его при помощи JS. Будем проверять форму перед отправкой при помощи самописной функции
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<script> <!-- // Функция проверки формы function validate_form ( ) { if ( (document.submit_form.login.value)==''){alert('Поле логин не заполнено'); return false; exit(); }; if ( (document.submit_form.password.value)==''){alert('Поле пароль не заполнено'); return false; exit();}; alert('Подтверждаю отправку данных'); document.submit_form.name.submit(); } //--> </script> |
На клиенте проверяем заполнены ли поля. Тут можно кучу других проверок организовать, но это уже тема … Continue reading
Posted in javascript, PHP
Comments Off on PHP.JS. Проверка полей на пустоту. Усовершенствуем скрипт авторизации
PHP. Простейший скрипт авторизации
Предположим, что база данных у нас есть. Попробуем авторизоваться, используя данные из БД. Создадим простейшую HTML форму авторизации Результат
Posted in PHP
Comments Off on PHP. Простейший скрипт авторизации
PHP. Получение данных из базы и вывод в браузер
Простой пример подключения к БД и вывода данных из таблицы в браузер. Будем выводить все записи одного поля.
Posted in PHP
Comments Off on PHP. Получение данных из базы и вывод в браузер
PHP. Как подключиться к MySQL и получить результирующий набор данных.
Вся информация уже давным давно есть на http://php.net/manual/ru/. Я же пишу здесь скорее для себя, когда пишешь – лучше запоминаешь. Решил освоить для себя несколько вещей в PHP, основы так сказать. А то JS хорошо, Delphi хорошо, C# хорошо, а вот … Continue reading
Posted in PHP
Comments Off on PHP. Как подключиться к MySQL и получить результирующий набор данных.
Delphi. Indy. idFTP. Как проверить соединение с сервером и если что – узнать об ошибках?
Простой пример, основанный на книге “Глубины Инди”
1 2 3 |
... uses IdException ... |
Собственно сам код…
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 |
function IsFTPServerConnectionOk: Boolean; begin Result:=false; with idFTP do begin Host:=FTPParams.Host;// 'localhost'; //FTP-сервер Port:=FTPParams.Port;// 22; //порт ФТП сервера Username:=FTPParams.Username;// 'Логин'; Password:=FTPParams.Password;// 'Пароль'; end; try idFTP.Connect; try try if IdFTP.Connected then Result:=true; finally idFTP.Disconnect; end; except //Other exceptions on E: EIdException do begin showmessage(E.ClassName+' An network error occurred during communication: ' +#13#10+#13#10+E.Message); end; on E: Exception do begin showmessage(E.ClassName+' An unknown error occurred during communication: ' +#13#10+#13#10+E.Message); end; end; except // Catching Connection Exceptions on E: EIdException do begin showmessage(E.ClassName+' An network error occurred while trying to connect: ' +#13#10+#13#10+E.Message); end; on E: Exception do begin showmessage(E.ClassName+'An unknown error occurred while trying to connect: ' +#13#10+#13#10+E.Message); end; end; end; |
Здесь просто возбуждаются исключения. В принципе их можно где-то хранить и как-то обрабатывать. Отделены ошибки соединения от всех остальных ошибок. Но в данном, случае, конечно это перебор, так … Continue reading
Delphi. Indy. Обработка исключений
Согласно книге “Глубины Инди”, которая есть на просторах Интернетов, мы можем сделать следующее… При работе с клиентом
1 2 3 4 5 6 |
Client.Connect; try // Perform read/write here finally Client.Disconnect; end; |
Вот более развернутая версия, в которой мы отделяем ошибки Indy от всех остальных ошибок, например VCL ошибок.
1 2 3 |
... uses IdException ... |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
try Client.Connect; try // Perform read/write here finally Client.Disconnect; end; except on E: EIdException do begin ShowMessage( 'Communication Exception: ' + E.Message); end else begin ShowMessage( 'VCL Exception: ' + E.Message); end; end; |
А вот … Continue reading