-
MY PROJECTS
-
Recent Posts
- Algo.Java.DFS.Theory
- Java.Algo.DFSExample
- Algo.Java.Xor to find difference between strings
- Java.Algo.AllSubArrays
- Linux. Ubuntu.Monitor resources
- Java.Algo.Get sum of Digits from int
-
Java. List
to int[] and backwards - Sql.Execution Order
- Algo.Java.BinarySearch
- SQL. Conditional expression with count()
- Java.Algo.CumulativeApproach
- Algo.Java.BFS in BinaryTree
- Java.Jackson.Serialize object to json
- Algo. Traverse linked list
- Algo. Java. Remove-duplicates-from-sorted-array
- Java.Hibernate.SimpleExample
- Java.Jdbc.SimpleExample
- SQL. Calc the sum with case, example
- Mullvad – free the internet :)
- Junit. Jupiter
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: Indy
Delphi. Как отправить POST запрос, принять и декодировать его на idHTTPServer?
В принципе, я уже делал такой пост Как отправить файл с помощью idHTTP и принять его на idHTTPServer ? Но в данном случае хочу акцентировать внимание именно на отправке и приеме параметров методом POST. Как это будет выглядеть?
Delphi. Как отправить файл с помощью idHTTP и принять его на idHTTPServer ?
Данный пример отправляет файлы и сообщения на сервер, а также принимает и раскодирует их. Работал с FTP протоколом, но столкнулся с рядом ограничений, которые как я понял можно преодолеть при помощи HTTP протокола и которые не позволяют мне решить поставленную … Continue reading
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. Indy. FTP. Как получить дату создания, изменения и последнего доступа на сервере от idFTP ?
Этот вопрос можно преобразовать в “как преобразовать 20160911195120 в 11.09.2016 19:51:20 и перевести в LocalTime?” Я также поднял этот вопрос на 2 форумах Русский форум Английский форум Также мне показалась интересной ссылка на TTimeZone – класса, который появился, начиная с Delphi … Continue reading
Delphi.Indy. FTP. Активный и пассивный режимы. Мультипоточная загрузка на сервер. Правильная визуализация процесса
В прошлом посте про мультипоточную загрузку я столкнулся с некорректной индикацией процесса загрузки на сервер. Сама загрузка работала для нескольких файлов. А вот визуализация только для 1 файла. Поэтому, приходилось выкручиваться с таймерами. И я бы оставил этот вопрос, если … Continue reading
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
Delphi. Indy. Как передать на FTP сервер несколько файлов в разных потоках?
Вот что у нас получится…
Delphi. Indy. Трабл с кодировкой имен файлов при загрузке на FTP сервер
Пользуюсь INDY. При загрузке файлов на FTP сервер методом Put столкнулся вот с этим Поискав немного в сети, понял, что это какой трабл в Инди. Временное решение, в отсутствие времени – транслит.
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 |
function TForm2.Translit(s: string): string; const rus: string = 'абвгдеёжзийклмнопрстуфхцчшщьыъэюя'; lat: array[1..33] of string = ('a', 'b', 'v', 'g', 'd', 'e', 'yo', 'zh', 'z', 'i', 'y', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'f', 'h', 'ts', 'ch', 'sh', 'shch', '''', 'y', '''', 'e', 'yu', 'ya'); var p, i, l: integer; begin s:=widelowercase(s); Result := ''; l := Length(s); for i := 1 to l do begin p := Pos(s[i], rus); if p<1 then Result := Result + s[i] else Result := Result + lat[p]; end; end; procedure TForm2.bPutFileClick(Sender: TObject); var DestName:string; begin idFTP.MakeDir('/myfiles'); IdFTP.ChangeDir('/myfiles'); if OpenDialog.Execute then begin FFileToPut:=OpenDialog.FileName; DestName:=Translit(ExtractFileName(OpenDialog.FileName)); idFTP.Put(OpenDialog.FileName,DestName); // idFTP.Disconnect; end; end; |
После чего получаем Не так идеально, … Continue reading
Delphi. FTP. Как создать свой FTP сервер и FTP клиент и передать файл с клиента на сервер?
Встала задача передачи файла на сервер. Выбрал FTP протокол. В Delphi есть соответствующие компоненты INDY IdFTPServer IdFTP Но как ими пользоваться? Как их настроить так, чтобы всё работало и выполнялась задача передачи файлов с клиента на сервер?