Евгений Корепов

Пользователи
  • Публикаций

    500
  • Зарегистрирован

  • Посещение

  • Победитель дней

    47

Евгений Корепов стал победителем дня 14 сентября

Евгений Корепов имел наиболее популярный контент!

Информация о Евгений Корепов

  • Звание
    Продвинутый пользователь
  • День рождения 22 июля

Информация

  • Пол
    Мужчина
  • Город
    Ухта

Посетители профиля

1 966 просмотров профиля
  1. Евгений Корепов

    Ошибка QuotedStr

    http://docwiki.embarcadero.com/Libraries/Tokyo/en/System.SysUtils.QuotedStr Возможно : "Примечание. При работе с многобайтовыми системами символов ( MBCS) вместо этого используйте AnsiQuotedStr ." ?
  2. Евгений Корепов

    Не работает OverWrite в Deployment

    Или в среде, меню Run, Parameters, поле Parameters - добавьте туда -cleaninstall, при запуске на устройстве будет производиться чистая установка.
  3. Евгений Корепов

    скачать файл

    Ну а в тему - если это винда, то можете попробовать открыть ссылку на файл с помощью ShellExecute, если андроид, то запустить активити как тут https://stackoverflow.com/questions/49200962/delphi-10-2-how-can-i-open-a-url-in-androids-web-browser-from-my-application (вместо TJIntent.JavaClass.ACTION_VIEW можете попробовать использовать другие экшены). В ios не подскажу...
  4. Евгений Корепов

    скачать файл

    Надо отвечать 42 😉 https://ru.wikipedia.org/wiki/Ответ_на_главный_вопрос_жизни,_вселенной_и_всего_такого А автору топика совет - хотите получить ответ, задавайте вопросы правильно и подробно. Какая платформа? Что такое "стандартный загрузчик"? И так далее...
  5. Евгений Корепов

    System.Net.Socket.TSocket

    Сейчас только увидел в тексте " и для Android", сорри. Вы кусок кода отправки/получения покажите, может кто увидит в чем проблема.
  6. Евгений Корепов

    System.Net.Socket.TSocket

    Выдернул из рабочего проекта кусок, надеюсь вам поможет. Процедура SendCommand(Var ASendingData : TSendingData), в блокирующем режиме посылает текст на сервер и получает результат. unit UnitExcavatorWinTCPThread; interface uses classes, SysUtils, System.Types, System.Generics.Collections, System.Win.ScktComp, UnitExcavatorThread, UnitExcavatorTypes; type TExcavatorWinTCPThread = class(TExcavatorThread) protected FClientSocket : TClientSocket; CStream : TWinSocketStream; procedure CreateNetwork; override; procedure DestroyNetwork; override; procedure SendCommand(Var ASendingData : TSendingData); override; public end; implementation procedure TExcavatorWinTCPThread.CreateNetwork; begin FClientSocket:=TClientSocket.Create(Nil); FClientSocket.Host:=FExcavatorInstance.Host; FClientSocket.Port:=FExcavatorInstance.PortTCP; FClientSocket.ClientType:=TClientType.ctBlocking; CStream:=TWinSocketStream.Create(FClientSocket.Socket, FTimeouts.ConnectTimeout); end; procedure TExcavatorWinTCPThread.DestroyNetwork; begin if Assigned(CStream) then FreeAndNil(CStream); if Assigned(FClientSocket) then FreeAndNil(FClientSocket); end; procedure TExcavatorWinTCPThread.SendCommand(Var ASendingData : TSendingData); Var AReaded, ACount : integer; ABuffer : TBytes; ACommand, AStringBuffer : AnsiString; ACommandIdString : String; ADone : Boolean; begin ACommandIdString:='"id":' + ASendingData.CommandId.ToString; ASendingData.Error:=False; ACommand:=AnsiString(ASendingData.Value) + #10; ASendingData.Value:=''; if Not FClientSocket.Active then try FClientSocket.Open; except on E:Exception do begin ASendingData.Error:=True; ASendingData.Value:=E.Message; exit; end; end; if FClientSocket.Active then begin try // Считываем из буфера все что там есть. while CStream.WaitForData(CStream.TimeOut) do AStringBuffer:=FClientSocket.Socket.ReceiveText; except end; try FClientSocket.Socket.SendText(ACommand); except on E:Exception do begin ASendingData.Error:=True; ASendingData.Value:=E.Message; exit; end; end; try ADone:=False; ACount:=0; repeat if CStream.WaitForData(CStream.TimeOut) then ASendingData.Value:=ASendingData.Value + FClientSocket.Socket.ReceiveText; if ASendingData.Value.Contains('"id":1') then break; if ASendingData.Value.Contains(ACommandIdString) then break; Inc(ACount); if ACount > 2 then break; until ADone; except on E:Exception do begin ASendingData.Error:=True; ASendingData.Value:=E.Message; exit; end; end; end else begin ASendingData.Error:=True; ASendingData.Value:='Not connected'; end; end; end.
  7. Евгений Корепов

    SendCommandWithResponse

    Посмотрите в идущих в комплекте примерах: Тут \Object Pascal\Multi-Device Samples\Device Sensors and Services\App Tethering\ : MediaPlayer PhotoWall И тут \Object Pascal\RTL\Tethering\ : BDShoppingList DesktopBeaconCast DesktopCast MediaPlayer PhotoWall А в общих чертах как то так: Вы получаете на "сервере" данные ни где нибудь, а в событии procedure TForm1.TetheringAppProfile1ResourceReceived(const Sender: TObject; const AResource: TRemoteResource); Переменная AResource - все что вам нужно. Там и полученные данные AResource.Value определенного типа AResource.Value.DataType. И профиль отправителя AResource.Profile позволяющий точно его идентифицировать.
  8. Евгений Корепов

    Регулярное выражение для сайта...

    Может стоит забить на парсинг html, а использовать специально созданный для таких целей rss интерфейс https://zadolba.li/rss ? Там вам все отдается в xml и чудесно раскладывается по полочкам штатными средствами
  9. Евгений Корепов

    NetHttpClient vs idHttp

    Я уперся рогом и все таки смог найти решение для вас. Гугль любит разработчиков, и обычно оставляет им возможность пользоваться сервисами бесплатно. И в этот раз чутьё не подвело. Вот решение: unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Controls.Presentation, FMX.ScrollBox, FMX.Memo, System.JSON, System.Net.HTTPClient, System.NetEncoding; type TForm1 = class(TForm) Memo1: TMemo; procedure FormShow(Sender: TObject); private { Private declarations } public { Public declarations } function GoogleTranslate(const AValue : String) : String; end; var Form1: TForm1; implementation {$R *.fmx} procedure TForm1.FormShow(Sender: TObject); Var S : String; begin S:=GoogleTranslate('Hello world!'); Memo1.Lines.Add(S); end; function TForm1.GoogleTranslate(const AValue : String) : String; const ConstSourceLang = 'en'; ConstTargetLang = 'ru'; var AResponce : IHTTPResponse; FHTTPClient : THTTPClient; AAPIUrl : String; begin AAPIUrl:='https://translate.googleapis.com/translate_a/single?client=gtx&sl=' + ConstSourceLang + '&tl=' + ConstTargetLang + '&dt=t&q=' + TNetEncoding.URL.Encode(AValue); FHTTPClient:=THTTPClient.Create; FHTTPClient.UserAgent:='Mozilla/5.0 (Windows; U; Windows NT 6.1; ru-RU) Gecko/20100625 Firefox/3.6.6'; Result:='Translate Error : '; AResponce:=FHTTPClient.Get(AAPIUrl); if Not Assigned(AResponce) then begin Result:=Result + 'unknow.'; Exit; end; if AResponce.StatusCode <> 200 then begin Result:=Result + AResponce.StatusText; end; try Result:=TJSONArray(TJSONArray(TJSONArray(TJSONObject.ParseJSONValue(AResponce.ContentAsString)).Items[0]).Items[0]).Items[0].Value; except Result:=Result + 'error parse JSON.'; Exit; end; end; end. Подправил код, сделал покрасивее и убрал deprecated encode.
  10. Евгений Корепов

    NetHttpClient vs idHttp

    Вот сделал аналог на THTTPClient: function TForm1.GoogleTranslate(const AValue : String) : String; const ConstGoogleUrl = 'http://translate.google.ru/translate_a/t'; var ASource: TStringList; AResponce : IHTTPResponse; FHTTPClient : THTTPClient; begin FHTTPClient:=THTTPClient.Create; FHTTPClient.UserAgent:='Mozilla/5.0 (Windows; U; Windows NT 6.1; ru-RU) Gecko/20100625 Firefox/3.6.6'; Result:='Translate Error : '; ASource:=TStringList.Create; ASource.Add('client=x'); ASource.Add('text=' + AValue); ASource.Add('hl=en'); ASource.Add('sl=en'); ASource.Add('tl=ru'); AResponce:=FHTTPClient.Post(ConstGoogleUrl, ASource); if Not Assigned(AResponce) then begin Result:=Result + 'unknow.'; Exit; end; if AResponce.StatusCode <> 200 then begin Result:=Result + AResponce.StatusText; end; Result:=AResponce.ContentAsString; end; Получаю вполне очевидный ответ: Конечно подбор HTTP Headers и других параметров может и обманет не надолго сервис, но на это надеяться не стоит. В Гугле работают отнюдь не дураки, и вряд ли они создавали свой сервис перевода (с отличным API кстати) просто так. Сервис платный (20 долларов США за 1 000 000 символов , но с пробным бесплатным периодом. Если вы хотите 100% работающее решение, то лучше воспользоваться им https://translate.google.com/intl/ru/about/forbusiness.html
  11. В это операционке уже есть встроенный FTP сервер. Кривой, но работать будет. Включить его и настроить очень просто.
  12. Вот, по моему мнению, самый просто и быстрый способ: Устанавливаете на сервере FTP сервер. К примеру SlimFTPd (http://www.whitsoftdev.com/slimftpd/), его можно запустить как сервис. Не забываете настроить папку, пользователя (с паролем) и остальное. Там все просто. В своем приложении отправка файла на FTP сервер займет у вас несколько строчек: IdFTP:=TIdFTP.Create; IdFTP.Host:=Host; IdFTP.Username:=ALogin; IdFTP.Password:=APassword; IdFTP.Passive:=True; IdFTP.TransferType:=ftBinary; IdFTP.ReadTimeout:=ConstFTPTimeout; IdFTP.TransferTimeout:=ConstFTPTimeout; try IdFTP.Connect; except on E : Exception do begin Error:=True; ErrorMessage:=E.Message; end; end; AFilePathLocal:='Путь к файлу который хотите отправить'; AFilePathRemote:='/Download/'; if TFile.Exists(AFilePathLocal) then try IdFTP.Put(AFilePathLocal, AFilePathRemote); except on E : Exception do begin Error:=True; ErrorMessage:=E.Message; end; end; IdFTP.Disconnect; IdFTP.Free; Вот как то так. P.S. Не верно написал путь для отправки. Исправил AFilePathRemote:='ftp://192.168.0.150/Download/'; на AFilePathRemote:='/Download/';
  13. Давайте определимся что из себя представляет ваш "Серверный ПК". Операционная система? Если у вас к нему доступ? Можете ли вы управлять им по своему усмотрению?
  14. Добавлю что есть десяток других, менее затратных способов выполнить вашу задачу. Начиная от загрузки по HTTP или FTP, заканчивая использованием облачных хранилищ.