Таблица лидеров


Популярный контент

Показан наиболее популярный контент за 22.01.2018 во всех областях

  1. 5 баллов
    sinuke

    Ошибки при переходе в Токио

    Как я понимаю модуль FMX.FontGlyphs.Android.pas подключен из Берлинской версии студии. Вам нужен этот файлик для Токио. Как я понимаю, используете что-то типа FontAwesome. Например, на гитхабе Равиля этот файл есть версии и для Берлин и для Токио.
  2. 5 баллов
    Brovin Yaroslav

    Приведение типа - as

    Если посмотреть, что вызывается под капотом для случая с интерфейсами, то можно увидеть: 1. Для вызова Interface1(Instance), вызывает системный метод _IntfCopy, который по сути не проверяет типы, а просто увеличивает счетчик типов. Такое приведение типов не проверяет типы, а просто копирует указатель а реализацию. procedure _IntfCopy(var Dest: IInterface; const Source: IInterface); {$IFDEF PUREPASCAL} var P: Pointer; begin P := Pointer(Dest); if Source <> nil then Source._AddRef; Pointer(Dest) := Pointer(Source); if P <> nil then IInterface(P)._Release; end; {$ELSE} 2. При использовании оператора as будет вызван _IntfCast, который выполняет честное приведение типов через QueryInterface. Поэтому в этом случае вы получите на выходе честный указатель на таблицу интерфейса, если интерфейс поддерживается объектом. procedure _IntfCast(var Dest: IInterface; const Source: IInterface; const IID: TGUID); {$IF defined(PUREPASCAL) or defined(PIC)} // PIC: EBX must be correct before calling QueryInterface var Temp: Pointer; begin if Source = nil then Dest := nil else begin Temp := nil; if Source.QueryInterface(IID, IInterface(Temp)) <> 0 then ErrorAt(byte(reIntfCastError), ReturnAddress) else begin if Assigned(Dest) then Dest._Release; Pointer(Dest) := Temp; end; end; end;
  3. 4 балла
    Если пытаться кормить json парсер кривым json и ожидать, что почему вдруг объект станет неожиданно массивом и не будет исключений, то таких парсеров вам не найти. Проще написать самому: быстро, дешево, без 100500 классов и исключений. И такой, который будет считать, что {} - это массив. А вообще, рекомендую начать с http://www.json.org/ Возможно, после этого придет понимание того, почему нужно то или иное количество классов, ну или хотя бы вы сами разберетесь и поймете, почему так происходит.
  4. 4 балла
    Кривяков Виталий

    Асинхронный NetHTTPClient

    Добрый день! Все проще, гораздо. Net := THTTPClient.Create; Net.BeginPost( procedure (const Value : IAsyncResult) begin AsyncResult(Value); // Вот тут можно вызвать любую процедуру, или просто обработать результат. end, URL, InputStream, OutputStream, Headers); В анонимной процедуре просто вызываете нужную процедуру, для интерактивной одну, для периодических запросов другую.
  5. 4 балла
    Alex7wrt

    Новые требования на Google Play

    Здесь речь идёт о значении targetSDK в файле манифеста. Этот параметр влияет на то, использует ли приложение новые функции последних версий SDK. То есть какие SDK приложение гарантированно поддерживает. Но если сейчас этому параметру разработчик может в принципе придавать любые значения, то со второй половины этого года Google вводит правило, что он должен быть не ниже предпоследней версии. То есть если сейчас последняя версия равна 27, значит этот параметр должен быть с августа не ниже 26 для новых приложений, а с ноября для обновлений. В дальнейшем раз в год по мере выхода новых версий Android нужно повышать это значение на 1. Так Google побуждает разработчиков использовать функции новых версий SDK. Чтобы соответствовать этим требованиям, нужно обновлять значение параметра TargetSDK в файле манифеста, и все будет норм.
  6. 3 балла
    Tumaso

    Нужен нормальный JSON парсер

    А меня System.JSON полностью устраивает. Ошибок парсинга валидных данных не было ни разу, скорость на нормальном уровне. Гигабайтные данные правда не парсирую, но мне это и не нужно
  7. 3 балла
    Равиль Зарипов (ZuBy)

    StatusBar Color

    попробуйте последнюю версию
  8. 2 балла
    x11

    Служба + перехват номера

    На основе нескольких тем форума сделал службу перехвата звонков и номера телефона. http://fire-monkey.ru/topic/3878-статьякак-создать-простой-android-broadcast-receiver-how-to-implement-simplest-android-broadcast-receiver-in-delphi/ http://fire-monkey.ru/topic/2386-перехват-события-звонка/ http://fire-monkey.ru/topic/2972-использование-нативных-localbroadcastmanager-и-broadcastreceiver/ Покритикуйте пожалуйста. Уверен, что не всё правильно. Но что до ума не удалось довести, так это то, как правильно останавливать службу и закрывать приложение. Проект (для Токио) приложил теме. Заранее благодарен. BR2.rar
  9. 2 балла
    Tumaso

    Разочирование

    Код также пишешь, как пишешь на русском языке?
  10. 2 балла
    x11

    Управление окном заставки

    Может кому пригодится. 1. В приложении по умолчанию главной формой, т.е. формой, которая автоматически создается при старте, является форма логина. Т.е. именно она появляется первой. 2. В форме логина уже во время исполнения программы, подменяем форму логина на ту, которая должна теперь считаться главной. procedure SetAsMainForm(aForm:TForm); var P: Pointer; begin P := @Application.Mainform; Pointer(P^) := aForm; end; когда проверили логин/пароль и убедились, что пользователь авторизован, создаём форму и делаем её главной, а форму логина закрываем: procedure TfmLogin.btnOkClick(Sender: TObject); begin if edPass.Text = qUserspassword.AsString then begin UserData.ID := qUsersid.AsInteger; UserData.Name := qUsersname.AsString; UserData.Group := qUsersid_group.AsInteger; fmMain := TfmMain.Create(Application); fmMain.Show; SetAsMainForm(fmMain); close; end else begin lbInfo.Text := 'Ошибка. Пароль неверный.'; end; end;
  11. 2 балла
    wamaco

    Окончание подписки

    только оплатить
  12. 2 балла
    Здравствуйте. Требуется программа на андроид с набором кнопок со следующем функционалом: 1. Кнопка1 - создать базу в test.sqlite (в том месте где доступ к нему есть только у самого приложения (имею ввиду если это не ROOT телефон, при рут и так всё понятно) 2. Кнопка2 - создать таблицу в базе test.sqlite с названием "TblTest01" (с разным набором полей на своё усмотрение) 3. Кнопка3 - создать таблицу в базе test.sqlite с названием "TblTest02" (с разным набором полей на своё усмотрение) 4. Кнопка4 - Добавить строку в таблицу "TblTest01" (любой набор данных на ваших усмотрение) 5. Кнопка5 - Удалить строку в таблице "TblTest01" (по любому ключу на ваше усмотрение) 6. Кнопка6 - Изменить строку в таблице "TblTest01" (по любому ключу и любое значение на ваше усмотрение) Приложение должно иметь фоновый сервис, который должен получать данные с сервера и добавлять их в базу test.sqlite в таблицу "TblTest02". При получение новый данных, сервис должен показать в "шторке" сообщение, по клику на которую открывается само приложение с визуальной частью. Т.е. если визуально приложение закрыто, выгружено, не запущено или запущено, фоновый процесс должен сам делать запросы к серверу и добавлять новые данные в базу, если они есть/поступили Приложение должно запускаться вместе с системой, после перезагрузки и т.д. Использовать только те компоненты что доступны в самой среде из коробки. Часть где делается запрос к серверу должен иметь timeout равный 20 секундам. Сервис должен грамотно делать запросы к серверу как положено в Андроид приложениях. Серверная часть мне не нужна, можете для теста сами эмулирвать эти процессы. ----- ЦЕНА: 2500р. СРОКИ: Не горит, но в целом где то дней 7 есть Перечисляю на QIWI, ЯД, Сбербанк, короче куда скажите.
  13. 2 балла
    sinuke

    Как перемещать картинки на Андроиде?

    В OnGesure обрабатывать начало жеста, его окончание и собственно сам жест (Pan). Вот когда-то для себя делал демку test_touchanim.zip
  14. 2 балла
    x11

    Новые требования на Google Play

    здесь http://fire-monkey.ru/topic/4786-несколько-sdk-в-приложении/ обсудили, вывод: нужно самому ручками указывать в файле шаблона AndroidManifest.template.xml
  15. 2 балла
    x11

    BroadcastReceiver.OnReceive срабазывает 2 раза

    http://blog.mmarvick.com/blog/lollipop-multiple-broadcastreceiver-call-state/ это проблема андроида
  16. 2 балла
    "Сервис должен грамотно делать запросы к серверу как положено в Андроид приложениях. " Просто улыбнуло....)))
  17. 2 балла
    rareMax

    Оповещение о новых темах в Telegram

    Запущен канал в мессенджере Telegram, в котором оповещается о новых темах этого форума. На данный момент могут быть некоторые сбои, будьте терпеливы Предложения пишите тут, в комментариях. Канал: https://t.me/FMonkeyX
  18. 2 балла
    Akad

    Лагает StrigGrid - Андроид

    В смысле для чего? Что бы значениями заполнить таблицу. Он разве работает в каком-то другом режиме? На сколько я знаю только TStringGrid хранит значения в себе TGrid не умеет такого. У меня достаточно сложный код: procedure CTableElement.Grid1GetValue(Sender: TObject; const ACol, ARow: Integer; var Value: TValue); begin if ARow >= Length(CellValue) then begin assert(false); end; if ACol >= Length(CellValue[ARow].cols) then begin assert(false); end; if ACol = -1 then begin Value := CellValue[ARow].color; exit; end; if ACol = -2 then begin Value := CellValue[ARow].isBlinking; exit; end; Value := CellValue[ARow].cols[ACol].GetVal; end; Т.е. у меня описан цвет строки, её мигание. GetVal у меня TValue. В нём может быть текст или картинка.
  19. 2 балла
    x11

    Поиск контакта по номеру

    function TContactsManager.GetContactByNumber( const aPhoneNumber: string): string; var wUri: JNet_URI; wCursor: JCursor; wfilter, wJQueryParams: TJavaObjectArray<JString>; begin Result := ''; wUri := TJNet_URI.JavaClass.withAppendedPath ( TJContactsContract_PhoneLookup.JavaClass.CONTENT_FILTER_URI, StringToJString(aPhoneNumber) ); wfilter := TJavaObjectArray<JString>.Create(2); wfilter[0] := StringToJString('lookup'); wfilter[1] := StringToJString('display_name'); with SharedActivity.getContentResolver do wCursor := query(wUri, wfilter, nil, nil, nil); try if Assigned(wCursor) and (wCursor.getCount > 0) then begin wCursor.moveToNext; Result := JStringToString(wCursor.getString( wCursor.getColumnIndex(StringToJString('display_name')))); end; finally wCursor.Close; wCursor := nil; end; end; http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1183758&msg=21183983
  20. 2 балла
    Akad

    Лагает StrigGrid - Андроид

    Переопределите DrawColumnCell, и без проблемы выведите что как и где надо. TGrid - это конструктор. Все данные надо хранить у себя. Переопределить прежде всего GetValue/SetValue. Затем переопределить DrawColumnCell и рисовать в тех колонках, где нужен custom. Вот образец переопределения (то как рекомендует рисовать эмбо - загон ещё тот, лучше туда вообще не смотреть) procedure CScriptRunner.StringGrid1DrawColumnCell(Sender: TObject; const Canvas: TCanvas; const Column: TColumn; const Bounds: TRectF; const Row: Integer; const Value: TValue; const State: TGridDrawStates); const HorzTextMargin = 0; VertTextMargin = 0; var TextLayout : TTextLayout; TextRect: TRectF; center : TPoint; bmp:TBitmap; Val: TValue; color : DWORD; BlinkColumn : boolean; s, s2:string; p:integer; tm : TDateTime; Bou2: TRectF; begin // Например мы не хотим рисовать в колонках с чек боксами if Column is TCheckColumn then begin exit; end; // Например хотим менять цвет для визуального отделения строк TextRect := Bounds; case Row mod 4 of 0:Canvas.Fill.Color := $FFFFFFFF; 1:Canvas.Fill.Color := $FFF8F8F8; 2:Canvas.Fill.Color := $FFFCFCFC; 3:Canvas.Fill.Color := $FFF5F5F5; end; TextRect.Left := TextRect.Left-5; TextRect.Bottom := TextRect.Bottom; TextRect.Inflate(-HorzTextMargin+12, -VertTextMargin); Canvas.FillRect(TextRect, 0, 0, AllCorners, 1); TextRect := Bounds; //выводим текст canvas.Fill.Color := color canvas.Font.Family := 'Calibri'; canvas.Font.Size := g_ProntFontSize; Canvas.FillText(TextRect,Value.ToString,false,100,[], TTextAlign.Leading,TTextAlign.Leading); end; Главное, что тут можно отрисовать картинку, обратиться например (Sender as TGrid).OnGetValue(Sender,-1,Row, val); color := val.AsUInt64; у меня на -1 выдаётся цвет строки. И так далее. В общем полнейшая кастомизация всего чего можно. Ещё бы глюки поправили...
  21. 2 балла
    mazayhin

    [Андроид] Настройки ОС

    Событие формы OnKeyDown // uses FMX.Platform, FMX.VirtualKeyboard begin if Key = vkHardwareBack then begin Key := 0; end end; Как то так..
  22. 2 балла
    mazayhin

    [Андроид] Настройки ОС

    http://support.quicktapsurvey.com/support/solutions/articles/208386-kiosk-mode-android-5-0-lollipop-or-higher
  23. 2 балла
    Равиль Зарипов (ZuBy)

    [Андроид] Настройки ОС

    В андроиде 5+ появился из коробки киоскмоде, на стоке точно. можно перекрыть кнопку назад, но другие кнопки не перекрыть это максимум что вы можете сделать
  24. 2 балла
    mazayhin

    [Андроид] Настройки ОС

    Для этого надо использовать сторонний лаунчер, реализующий т.н. kioskmode. Кнопку back можно переопределить, а вот остальные система не даст. Взможно, можно с помощью AccesibilityManager, точно не скажу
  25. 2 балла
    любую Shared папку, которую вам не жалко "захламлять". В остальные вас система не пустит, а не-shared уйдут вместе с программой
  26. 2 балла
    Andrey Efimov

    Прозрачность TlistViewItem

    Через стиль можно сделать, "itembackground.color" ставим Null. Ну и прозрачность у самого компонента включаем.
  27. 2 балла
    mazayhin

    Отпечаток пальца

    Мы писали на java библиотеку, реализующую работу с сенсором и кейсторам, подключали с помощью паскалевской обертки. Ели будет интерес, то как дойдут руки, до ума доведем и выложим.
  28. 2 балла
    kami

    VersionCode

    (с) не помню чье: var FProgramVersion: string; function GetProgramVersion: string; var {$IFDEF ANDROID} PackageManager: JPackageManager; PackageInfo: JPackageInfo; {$ENDIF} {$IFDEF IOS} s: MarshaledAString; {$ENDIF} {$IFDEF MSWINDOWS} Exe: string; Size, Handle: DWORD; Buffer: TBytes; FixedPtr: PVSFixedFileInfo; {$ENDIF} begin if FProgramVersion <> '' then begin Result := FProgramVersion; exit; end; {$IFDEF ANDROID} PackageManager := TAndroidHelper.Context.getPackageManager; PackageInfo := PackageManager.getPackageInfo(TAndroidHelper.Context.getPackageName, 0); Result := JStringToString(PackageInfo.versionName); {$ENDIF} {$IFDEF IOS} s := TNSString.Wrap(CFBundleGetValueForInfoDictionaryKey(CFBundleGetMainBundle, kCFBundleVersionKey)).UTF8String; Result := string(s); {$ENDIF} {$IFDEF MSWINDOWS} Exe := ParamStr(0); Size := GetFileVersionInfoSize(PChar(Exe), Handle); if Size = 0 then begin Result := 'Unknown'; exit; end; SetLength(Buffer, Size); if not GetFileVersionInfo(PChar(Exe), Handle, Size, Buffer) then begin Result := 'Unknown'; exit; end; if not VerQueryValue(Buffer, '\', Pointer(FixedPtr), Size) then begin Result := 'Unknown'; exit; end; Result := Format('%d.%d.%d.%d', [LongRec(FixedPtr.dwFileVersionMS).Hi, // major LongRec(FixedPtr.dwFileVersionMS).Lo, // minor LongRec(FixedPtr.dwFileVersionLS).Hi, // release LongRec(FixedPtr.dwFileVersionLS).Lo]); // build {$ENDIF} FProgramVersion := Result; end;
  29. 2 балла
    StartCommand вызывается каждый раз, когда мы вызываем из приложения StartService. А как обрабатывать намерение (Intent) переданный в этот метод — это наше дело. У меня в этой команде обрабатывался и старт и стоп. Убивать приложение через KillBackgroundProcess не обязательно, это осталось от моего другого приложения, где выгрузить процесс из памяти было критичным.
  30. 2 балла
    Добавляем метод onRequestPermissionsResult в приложение
  31. 2 балла
    haword

    [Андроид]не видно картинки

    в делфи делается так - li:= lv.Items.Add; lii:=li.Objects.FindObjectT<TListItemImage>('Image'); lii.OwnsBitmap:=True; далее можно грузить картинку, если в потоке то TThread.Synchronize(TThread.CurrentThread, procedure() begin // присваивание битмапу картинки lii.Bitmap:= TBitmap.Create; lii.Bitmap.SetSize(ItemBitmap.Width, ItemBitmap.Height); lii.Bitmap.Clear(TAlphaColors.Null); lii.Bitmap.CopyFromBitmap(ItemBitmap); end );
  32. 1 балл
    FREEFAR

    Сортировка FDTable

    дополню немного FDTable.IndexFieldNames := 'имя поля :A'; ASC FDTable.IndexFieldNames := 'имя поля :D'; DESC
  33. 1 балл
    rareMax

    Предупреждение MessageDlg

    FMX.Dialogs procedure ShowMsgYesNo; begin { Show a multiple-button alert that triggers different code blocks according to your input } TDialogService.MessageDialog('Choose a button:', System.UITypes.TMsgDlgType.mtInformation, [System.UITypes.TMsgDlgBtn.mbYes, System.UITypes.TMsgDlgBtn.mbNo], System.UITypes.TMsgDlgBtn.mbYes, 0, // Use an anonymous method to make sure the acknowledgment appears as expected. procedure(const AResult: TModalResult) begin case AResult of { Detect which button was pushed and show a different message } mrYES: ShowMessage('You chose Yes'); mrNo: ShowMessage('You chose No'); end; end); end;
  34. 1 балл
    Barbanel

    Cannot Connect to the Mac

    Разобрались, день был тяжелым и довольно насыщенным) Причина была в том, что не были сгенерированы provision profiles. А мы в свою очередь не имели понятия что они нужны и как их сгенерировать. После генерации оных на developer.apple.com, обновления их же в xcode, загрузки их через paserver с помощью такой-то матери, наконец-то оно заработало! Всем спасибо за моральную поддержку!
  35. 1 балл
    Проект закрыт (уже около года как), ввиду ряда экономических и юридических вопросов.
  36. 1 балл
    Равиль Зарипов (ZuBy)

    Зависает при старте

    procedure CloseApp; begin {$IFDEF ANDROID} TAndroidHelper.Activity.moveTaskToBack(true); // MainActivity.finish; {$ELSE} Application.Terminate // Application.MainForm.Close; {$ENDIF} end; procedure TFormMain.FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState); begin inherited; if Key in [vkEscape, vkHardwareBack] then begin CloseApp; Key := 0; end; end;
  37. 1 балл
    Можно не устраивать флуд в теме? Если потом приспичит сделать через Push, дам задание. Пока надо так. А то вы сейчас начнете тут уточнять чем лучше, что улыбнуло и кого. Оно мне вот вообще не нужно тут. Я уже до этого задавал вопрос про разницу в Сервисе и Пуше. Меня ответы не устроили. Есть такое задание и по нему давайте двигаться. Весь офф топ, можете создать в отдельной теме и обсудить там. Я же жду того кто возьмется, а вместо этого вижу каждый раз ваши коменты. Я же не ветку сделал "как лучше мне сделать", а конкретно поставил что я хочу. Спасибо за понимание.
  38. 1 балл
    Akad

    Лагает StrigGrid - Андроид

    К сожалению, это один из бесчисленных глюков FMX, тянущихся с самого начала компиляций под мобильные платформы. Сторонний компонент обычно помогает.
  39. 1 балл
    ra.eremeev

    Отображение картинок в ListView

    Выкладываю решение. Надеюсь, кому-то будет полезно Есть ощущение, что это очередной костыль, но работает. Проблема - в необходимости перерисовки вручную добавленного TListItemImage после загрузки его Bitmap в потоке. LoadBitmaps.zip
  40. 1 балл
    rareMax

    Лагает StrigGrid - Андроид

    Я бы на твоем месте для мобильных платформ не использовал сетку(ну максимум для отображения). Лучше использовать TListView + форму/фрейм для редактирования данных выбраного элемента. P.S. для FMX у меня и под винду идет редактирование в форме/фрейме
  41. 1 балл
    Из PlatformSDK (PlatformSDKs\android-sdk-windows\sources\android-23\android\support\v4\content\) портировал в Delphi класс TJLocalBroadcastManager. Это очень полезный класс, если вы не хотите рассылать сообщения по всей системе, а есть необходимость общаться только внутри приложения или между хост-приложением и сервисом. Во вложении сам класс, в своем приложении убедитесь, что в Target Platforms (Android) → Android → Libraries включена библиотека android-support-v4.dex.jar. Прилагаю пример, для изучения и использования в работе, который демонстрирует работу обычного BroadcastReceiver и LocalBroadcastReceiver. В примере демонстрируется работа сообщений в приложении и сервисе. Сначала делаем build проекта LBCRService, потом будет доступна возможность собрать LocalBCR. Собираю в Berlin 10.1, но на младших версиях тоже должно работать, по крайней мере в Seatlle. В реализации методов procedure RegisterReceiver(); procedure UnRegisterReceiver(); необходимо снять комментарий с соответствующих строчек, в зависимости от того, какой тип ресивера вы хотите использовать. Androidapi.JNI.LocalBroadcastManager.pas.zip LocalBroadCastReceiver.zip
  42. 1 балл
    X := originX + cos(angle)*radius; Y := originY + sin(angle)*radius;
  43. 1 балл
    krapotkin

    Пример работы с потоками

    это абсолютно аналогично тому, что показал Равиль. когда не хочется создавать класс-потомок TThread
  44. 1 балл
    krapotkin

    Вопрос по среде Delphi

    в дереве в инспекторе (слева вверху) все очень просто перетаскивается в нужный контейнер хотя вариант с Alt+F12 для сложных случаев мне больше по душе )
  45. 1 балл
    dnekrasov

    Вопрос по среде Delphi

    Или Alt+F12 в Design режиме, после чего форму можно редактировать в текстовом режиме. Ну или просто выделить все контролы на форме - Ctrl+A или Shift+Click - а затем, как обычно - Ctrl+X->выбратьTabItem1->Ctrl+V
  46. 1 балл
    Andrey Efimov

    Узнать дату Android приложения

    Вот так попробуйте: uses Androidapi.JNI.GraphicsContentViewText, Androidapi.JNI.JavaTypes, Androidapi.Helpers, Androidapi.JNI.App; procedure TForm1.Button1Click(Sender: TObject); var PackageManager: JPackageManager; PackageName: JString; LastUpdateTime: Int64; begin PackageManager := TAndroidHelper.Activity.getPackageManager; PackageName := TAndroidHelper.Context.getPackageName; LastUpdateTime := PackageManager.getPackageInfo(PackageName, 0).lastUpdateTime; // firstInstallTime end; p.s. А вообще, это вы должны были ещё в первом посте указать версию среды...
  47. 1 балл
    Tumaso

    Прозрачность TlistViewItem

    Равиль, я так понимаю, что вы внесли изменения в стандартный ListView. Скажите плиз, в какой версии делфи взят исходник? берлин? Я это к тому, что при переходе на токио ModernLV нужно будет заново сливать с оригинальным исходником, правильно? Сорри за кучу знаков "вопрос"
  48. 1 балл
    Для подключения к Firebird нужна клиентская библиотека. Взять можно здесь https://firebirdsql.org/en/firebird-3-0/ в папке \lib
  49. 1 балл
    dnekrasov

    Select listbox

    Стилем: ListBoxItemStyle->ActiveStyleObject
  50. 1 балл
    x11

    Delphi не видит мой телефон

    В первую очередь нужно проверить, видит ли утилита adb.exe ваше устройство. в консоли CMD нужно зайти в папку "C:\Users\Public\Documents\Embarcadero\Studio\19.0\PlatformSDKs\android-sdk-windows\platform-tools" И выполнить adb devices, появится строка: List of devices attached и под ней все подключенные смартфоны (устройства). Если там ничего не будет, то не установлены USB-драйверы, либо на устройстве не включен режим разработчика. Когда установите драйверы и перезапустите ПК, то adb может всё равно не увидеть устройство, тогда поможет создание файла adb_usb.ini и нужно будет прописать в нём ID устройства: http://digphone.ru/esli-android-adb-ne-vidit-smartfon/ После этого перезапустить ПК. Снова запустить в CMD: adb.exe devices после этого может появиться строка, говорящая о том, что устройство подключено, но не авторизовано, т.е. код устройства и unauthorized: Переподключите смартфон к компьютеру и на экране смартфона должно появиться окно авторизации, где нужно нажать ОК и, возможно, перед этим сперва поставить галочку "Всегда разрешать подключение с этого ПК". Снова выполните adb.exe devices и увидите, что вместо unauthorized, будет слово device. Вместо перезапуска ПК, можно перезапускать службу adb adb kill-server adb start-server
Эта таблица лидеров рассчитана в Москва/GMT+03:00