Перейти к содержанию
  • Регистрация
  1. Общие вопросы

    1. 513
      сообщения
    2. 1 420
      сообщений
    3. 904
      сообщения
    4. Базы данных и REST

      Работа с базами данных и с REST из FireMonkey

      1 522
      сообщения
    5. 9 573
      сообщения
    6. Положение, размеры, выравнивание

      Положение контролов, размеры, способы выравнивания, абсолютные, локальные и экранные координаты

      422
      сообщения
    7. Работа с текстом

      Текстовые настройки, шрифты, отображение

      390
      сообщений
    8. Приложение и формы

      Настройки приложения и работа с формами

      1 288
      сообщений
    9. Отладка

      Вопросы отладки и логирования delphi приложений. Поиск ошибок.

      456
      сообщений
    10. Развертывание приложений

      Deployment Manager, копирование своих файлов на устройство при установке приложения, подготовка к публикации, распространение.

      568
      сообщений
    11. 1 014
      сообщения
    12. Общая информация о TControl

      Общая информация о TControl, на основе которого строятся все остальные визуальные компоненты FireMonkey

      75
      сообщений
    13. 279
      сообщений
    14. Прочие вопросы

      Если нет соответствующего раздела форума, то сюда публикуем свой вопрос, затем тема перейдет в нужный раздел форума.

      2 813
      сообщения
  2. Вопросы по платформам

    1. 6 324
      сообщения
    2. 1 660
      сообщений
    3. OSX

      186
      сообщений
    4. 698
      сообщений
    5. 6
      сообщений
    6. 60
      сообщений
  3. Вопросы по использованию RAD Studio

    1. Лицензирование

      Вопросы связанные с редакциями RAD Studio и лицензированием

      149
      сообщений
    2. 128
      сообщений
    3. 13
      сообщений
    4. 24
      сообщения
    5. 281
      сообщение
  4. Native FGX

    1. Новости

      Официальные новости с полей разработки новой кроссплатформенной нативной мобильной библиотеки Native FGX.

      216
      сообщений
    2. 29
      сообщений
    3. Предложения

      В этом разделе каждый может:

      1. Предложить идею о необходимости добавить тот или иной компонент в библиотеку
      2. Поделиться мыслями, чего не хватает, что было бы здорово добавить.
      3. Ваше мнение о существующих проблемах.
      • Сообщений пока нет
  5. Обучение

    1. 35
      сообщений
    2. 150
      сообщений
      • Сообщений пока нет
  6. Поиск специалистов по FireMonkey

    1. Консультации

      Здесь вы можете получить советы о том, как лучше реализовать свои приложение, чтобы сопровождение приложения было удобным, а работа приложения была быстрой.

      616
      сообщений
    2. Ищу подрядчика

      В этом разделе заказчики ищут подрядчиков для разовых/проектных работ на FireMonkey

      70
      сообщений
  7. Дополнительные ресурсы по FireMonkey

    1. Сторонние компоненты

      Раздел для публикации существующих компонентов для FireMonkey

      860
      сообщений
    2. Приложения, написанные с использованием FireMonkey

      Подборка ссылок на приложения, написанные с использование FireMonkey и RAD Studio

      329
      сообщений
    3. Примеры

      Подборка ссылок на официальные примеры

      9
      сообщений
    4. Руководства

      Книги, брошюры по FireMonkey

      68
      сообщений
    5. Шаблоны

      Шаблонные проекты

      157
      сообщений
    6. Статьи и заметки

      Публикация ссылок на интересные стать о Delphi и FireMonkey. Каждый пользователь может поделиться здесь своими ссылками.

      387
      сообщений
    7. Информация о версиях RAD Studio

      Информация о новых возможностях, появившихся в каждый версиях RAD Studio. А так же исправлениях и улучшениях

      799
      сообщений
    8. 488
      сообщений
  8. Организация работы данного форума

    1. 1
      сообщение
    2. Нарушения правил форума

      Сюда попадают темы, не отвечающие правилам форума

      23
      сообщения
    3. 149
      сообщений
    4. 91
      сообщение
    5. Функции форума

      Инструкции по использованию функций форума и оповещение о новых функциях

      19
      сообщений
  9. Видеокурсы

    1. Основная информация

      Основная информация о составе курсов, их формате и организационных вопросах.

      50
      сообщений
    2. Курсы

      Список текущих и планируемых курсов по FireMonkey

      4
      сообщения
    3. Предложения и голосования за новые курсы

      Здесь каждый пользователь может предложить тему курсов, в которой он заинтересован,  или проголосовать за уже предложенные.

      26
      сообщений
    4. 24
      сообщения
  • Native FGX

  • Последние сообщения

    • SharedActivity.startActivityForResult(intent, 0); результат получаешь в TMessageResultNotification intent.getStringExtra("SCAN_RESULT"); intent.getStringExtra("SCAN_RESULT_FORMAT");
    • В общем нашел вот такую функцию: https://community.idera.com/developer-tools/platforms/f/ios-platform/71188/safe-area-layout     Проверил. На iPhone 11 Pro работает. На симуляторе iPhone 5 c IOS 9.0 вылетела ошибка: Появилась перменная safeAreaLayoutGuide в IOS 11.0+ https://developer.apple.com/documentation/uikit/uiview/2891102-safearealayoutguide Поэтому нужно проверять версию IOS.
    • Добрый вечер. Пытаюсь добавить сканеровку qr кода в приложение.Делаю так: uses FMX.ALDevBarcode; private     FBarcode: TALDevBarcode;     procedure BarcodeScanResult(Sender: TObject; AResult: string);     procedure convert(s: string); procedure TForm1.BarcodeScanResult(Sender: TObject; AResult: string); var   ScanThread: TScanthread; begin   convert(AResult); end; procedure TForm1.convert(s: string); var   d, t, sum_start, fn_start, i_start: integer;   dt, tm: TDateTime;   sdt, tdt, summa, fn, fn_find_str: string;   fn_find, fn_name_find: variant; begin   if ContainsText(s, 't=') and ContainsText(s, 'T') and ContainsText(s, '&s=')     and ContainsText(s, '&fn=') then   begin     sum_start := pos('&s=', s, 1); // начало суммы     fn_start := pos('&fn=', s, 1); // начало фн номера     i_start := pos('&i=', s, 1); // начало i номера     fn := copy(s, fn_start + 4, i_start - (fn_start + 4));//ФН номер     summa := copy(s, sum_start + 3, fn_start - (sum_start + 3)); // сумма     summa := stringreplace(summa, '.', ',', [rfReplaceAll]);     sdt := copy(s, pos('t=', s, 1) + 2, 8); // вся дата     tdt := copy(s, pos('T', s, 1) + 1, 4); // все время     dt := EncodeDate(strtoint(copy(sdt, 1, 4)), strtoint(copy(sdt, 5, 2)),       strtoint(copy(sdt, 7, 2))); // цифры переводим в дату     tm := encodetime(strtoint(copy(tdt, 1, 2)), strtoint(copy(tdt, 3, 2)), 0,       0); // цифры переводим в время     DateEdit1.DateTime := dt + tm;     Label1.Text := summa;     Button2.Hint := fn;  // кнопке сканера присаиваем результат фн     dm.magaz.Open('select * from magaz');   //список магазинов     fn_find := dm.magaz.Lookup('fn', fn, 'name');  //ищем имя магазина в бд     fn_name_find := dm.magaz.Lookup('fn', fn, 'fn');  //ищем фн в бд     if vartype(fn_name_find) = varnull then     begin       Label40.Text := 'Не известный магазин'; // Не известный магазин       Label40.tag := 0; // такого фн нет в БД     end     else if (vartype(fn_find) = varnull) or (fn_find = '') then     begin       Label40.Text := 'Не известный магазин'; // Не известный магазин       Label40.tag := 2; // у этого ФН нет названияв в БД     end     else     begin       Label40.Text := fn_find; // название найденного по фн магазина       Label40.tag := 1; // название магазина есть в БД     end;     if Label40.tag <> 4 then       Label40.HitTest := True;       end   else     showmessage('QR код не содержит нужных данных'); end; procedure TForm1.Button2Click(Sender: TObject); begin           FBarcode.Scan; end; Содержимое FMX.ALDevBarcode unit FMX.ALDevBarcode; interface uses FMX.Types, FMX.Platform, System.Classes, System.Rtti, Androidapi.JNI.GraphicsContentViewText, Androidapi.Helpers; type TALDevBarcodeScanEvent = procedure (Sender: TObject; AResult: string) of object; TALDevBarcode = class(TFmxObject) private FPreservedClipboardValue: TValue; FMonitorClipboard: Boolean; FClipService: IFMXClipboardService; FOnScanResult: TALDevBarcodeScanEvent; function HandleAppEvent(AAppEvent: TApplicationEvent; AContext: TObject): Boolean; procedure DoScanResult(AValue: string); public constructor Create(AOwner: TComponent); override; destructor Destroy; override; procedure Scan; property OnScanResult: TALDevBarcodeScanEvent read FOnScanResult write FOnScanResult; end; implementation { TALDevBarcode } constructor TALDevBarcode.Create(AOwner: TComponent); var aFMXApplicationEventService: IFMXApplicationEventService; begin inherited Create(AOwner); FMonitorClipboard := False; if not TPlatformServices.Current.SupportsPlatformService(IFMXClipboardService, IInterface(FClipService)) then FClipService := nil; if TPlatformServices.Current.SupportsPlatformService(IFMXApplicationEventService, IInterface(aFMXApplicationEventService)) then aFMXApplicationEventService.SetApplicationEventHandler(HandleAppEvent) else Log.d('Application Event Service is not supported.'); end; destructor TALDevBarcode.Destroy; begin inherited Destroy; end; procedure TALDevBarcode.DoScanResult(AValue: string); begin if Assigned(FOnScanResult) then FOnScanResult(Self, AValue); end; function TALDevBarcode.HandleAppEvent(AAppEvent: TApplicationEvent; AContext: TObject): Boolean; function GetBarcodeValue: Boolean; var value: String; begin Result := False; FMonitorClipboard := False; if (FClipService.GetClipboard.ToString <> 'nil') then begin DoScanResult(FClipService.GetClipboard.ToString); FClipService.SetClipboard(FPreservedClipboardValue); Result := True; end; end; begin Result := False; if FMonitorClipboard and (AAppEvent = TApplicationEvent.BecameActive) then Result := GetBarcodeValue; end; procedure TALDevBarcode.Scan; var intent: JIntent; begin if Assigned(FClipService) then begin FPreservedClipboardValue := FClipService.GetClipboard; FMonitorClipboard := True; FClipService.SetClipboard('nil'); intent := TJIntent.Create; intent.setAction(StringToJString('com.google.zxing.client.android.SCAN')); //intent.putExtras(TJIntent.JavaClass.EXTRA_TEXT, StringToJString('"SCAN_MODE", "CODE_39"')); SharedActivity.startActivityForResult(intent, 0); end; end; end. После нажатия на button2 открывается сканер, сканирую и приложение зависает(в оснавном когда сканирую первый раз).
    • If possible, run this project for Android(FMX) No specific instructions for loading and launching fonts are included in the This Method Thank you
    • В общем разобрался. Пересоздал по новой проект и онклик перестал выдавать ошибку. По второй позиции, просто создал несколько стилей label и их применяю. Вопрос закрыт.
    • Про подводные камни разных кодировок в TEncoding.Default на win/android забыли. Код выше не будет работать если закодировать на одной ос и раскодировать на другой, немного подправил, еще есть расхождение кода символа перевода строки и соответственно разной длины передаваемого результата кодирования с разных OS, но пока проблем в тестировании не возникало: function IntEncode2(S, pwd: String): String; var i, iimax: integer; B, BPwd, Bls: TBytes; begin {$IF NOT defined(MSWINDOWS)} S:= Utf8ToAnsi(S); {$ENDIF} B:= TEncoding.ANSI.GetBytes(S); BPwd:= TEncoding.ANSI.GetBytes(pwd); iimax:= High(BPwd); for i:= Low(B) to High(B) do begin B[i]:= B[i] Xor BPwd[i Mod iimax]; end; result:= TNetEncoding.Base64.EncodeBytesToString(B); end; pwd передается уже в md5 При декодировании использую result:= TEncoding.ANSI.GetString(B);    
    • Вы создайте запрос прямо на первоисточнике https://github.com/zxing/zxing/issues - автор вам быстрее поможет. Прошу прощения, не туда ссылку дал ) Вот правильная https://github.com/Spelt/ZXing.Delphi/issues
    • Добрый день! есть приложение под андроид на 10.3 рио. Изображение с Камеры выводится на одну из закладок табконтрола. Когда с неё пользователь уходит - выключаю камеру (свойство Active в false). Когда возвращается - включаю.  Если примерно раз 40 уйти с этой закладки и вернуться - приложение вылетает по непонятной ошибке. Вероятно камеракомпонент какой-то мусор за собой в памяти оставляет.    попробовал ее динамически создавать, когда заходишь на эту закладку и уничтожать, когда уходишь с неё. Все работает, но баг с вылетом приложения остался. Может сталкивался кто?  каки есть мысли у уважаемого сообщества? Как этот баг победить?  есть ли альтернативы? держать камеру все время включённой - негуманно по отношению к аккумулятору (    
    • Попробовал скомпилировать по Android64 проект advancedTestApp сообщает ошибку компилирования libfastutils-android-thumb.a
    • Всем привет! Ребят, поделитесь кто, как решает эту проблему?... У меня основная проблема внизу экрана. приложение развернуто на весь экран и полоска (navigation area) перекрывает часть интерфейса.
    • Всем привет! ZXing работает и компилируется, но есть одно НО. Почему-то aTestApp работает под Android32, а под Android64 не считывает QRCODE. На Rio10.3.3 тестирую. Никто не сталкивался с таким, у вас под Android64 сканирование QRCODE проходит?
    • function IntEncode(const S, pwd: String): String; var   i, iimax: integer;   B, BPwd: TBytes; begin   B:= TEncoding.Default.GetBytes(S);   BPwd:= System.Hash.THashMD5.GetHashBytes(pwd);   iimax:= High(BPwd);   for i:= Low(B) to High(B) do     B[i]:= B[i] Xor BPwd[i Mod iimax];   result:= TNetEncoding.Base64.EncodeBytesToString(B); end; TBytes "магический" тип как строка: работает + 
    • Так?   function IntEncode(S, pwd: String): String; var i, iimax: integer; B, BPwd: TBytes; begin B:= TEncoding.Default.GetBytes(S); BPwd:= TEncoding.Default.GetBytes(System.Hash.THashMD5.GetHashString(pwd)); iimax:= High(BPwd); for i:= Low(B) to High(B) do begin B[i]:= B[i] Xor BPwd[i Mod iimax]; end; result:= TNetEncoding.Base64.EncodeBytesToString(B); end; Чайниковский вопрос, как проще добавить в начало TBytes другой TBytes?
    • 1. for i:= low(s) to high(S) do 2. не шифруй строку - шифруй байты B:=TEncoding.Default.GetBytes(S); $0030 (0) XOR $D0AF (Я) = $D09f - это блин шифрация половина текста плаинтекстом? у тебя хэш из латиницы с нулями в hi байте... 0 xor i = i русский текст есть в D0 и D1 диапазонах - так что HashString фикция делай на TBytes там нолей рандом    
    • Хочу использовать свой алгоритм в приложении, какие могут быть подводные камни потом в работе? Пакеты потом будут по HTTP ходить. Расшифровка на php.   function IntEncode(S, pwd: String): String; var i, iimax: integer; SS, SSS, Sln : String; begin pwd:=System.Hash.THashMD5.GetHashString(pwd); SS:=''; iimax:= Length(pwd); {$IFDEF ANDROID} for i:= 0 to Length(S)-1 do begin {$ELSE} for i:= 1 to Length(S) do begin {$ENDIF} SS:=SS + Chr(Ord(S[i]) Xor Ord(pwd[i Mod iimax])); end; result:= TNetEncoding.Base64.Encode(SS); end;  
  • Последние темы

×
×
  • Создать...