Перейти к содержанию
Fire Monkey от А до Я

Ingalime

Пользователи
  • Постов

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

  • Посещение

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

    5

Активность репутации

  1. Like
    Ingalime отреагировална Slym в Время нажатия пальца на экран   
    try
    //bad code here
    except
    on E:Exception do
     ShowMessage(E.Message);
    end
  2. Like
    Ingalime отреагировална SergB в Проблема с Android Service   
    Отвечу сам ?. Выяснил. Если загружать отдельно пакет для 64 версии, то все работает как надо. А вот если формируем aab, то начинаются такие проблемы. Причем все работает с aab нормально, если приложение не содержит сервиса. По всей видимости или делфа не верно формирует пакет aab для сервиса, либо на гуле при оптимизации происходят какие-то метаморфозы. Теперь другая проблема, как сформировать пакет aab так чтобы все работало?
  3. Like
    Ingalime отреагировална Edward Tarasov в TThread В фоновом режиме   
    Сам недавно бился с этим вопросом. ответ нашел на этом форуме.
    Но после долгого гугления вопроса сложилось впечатление, что на сегодняшний день из ios можно выжать максимум три минуты работы приложения в фоне, потом приложение перестает реагировать. в моем случае было необходимо передавать координаты. Что только не перепробовал - три минуты и все. можно мухлевать: Воспроизводить аудио или записывать с микрофона - но ребята из apple при публикации к такому отнесутся не очень. вот исходники которые нарыл - пример отрабатывает в фоне три минуты
     
    BackgroundTaskManager.zip
  4. Like
    Ingalime отреагировална Slym в multicast udp   
    А в инде все готово...
    procedure TForm1.FormCreate(Sender: TObject); begin   IdUDPServer1.ReuseSocket:=TIdReuseSocket.rsTrue;   IdUDPServer1.DefaultPort:=9898;   IdUDPServer1.Active:=true; end; procedure TForm1.IdUDPServer1AfterBind(Sender: TObject); begin   IdUDPServer1.Bindings[0].AddMulticastMembership('224.0.0.50'); end;  
  5. Like
    Ingalime отреагировална Олег Киреев в Перезапуск приложения при использовании галереи в ActionList   
    Вопрос решился открытием разрешения "Память" приложению на телефоне.
  6. Thanks
    Ingalime отреагировална Сергей Сергеев в [IOS] хранение данных   
    у меня приложение работает так и в Андроид и Иос
    в FormShow - вызываю Read, при первом запуске файла нет, ничего не заполняется.
    При первом заполнении вручную полей и попытке входа по кнопке - делаю сохранение Write
    При следующем запуске - файл уже есть и параметры входа считаются
    Для создания файла со значениями "по умолчанию" можно сделать  в Read - try - Except ( добавил ) - но не проверял 
     
     
     
     
  7. Thanks
    Ingalime отреагировална juppy в [IOS] хранение данных   
    Вот отличное описание для тех, кто ни разу не работал.
    Там с примерами и прочим блекждеком.
    http://docwiki.embarcadero.com/Libraries/Rio/en/System.IniFiles.TIniFile
    http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/IniFiles_TIniFile.html
    Создание файла и чтение из него данных занимает нематериальное время. 
    Поэтому я делаю так:
    Создаю сам файл с начальной инициализацией при первом развертывании. В примере - это создание главной формы.
    И там же потом его читаю но уже созданный.
    вот конструкция с начальной инициализацией чтением.
     
     
  8. Thanks
    Ingalime отреагировална juppy в [IOS] хранение данных   
    Нет не нужно его засовывать в ресурс. Создаете его при развертывании приложения как обычно.
    Если нужно сделать начальные установки, то в методах класса TIniFile есть Read***  который возвращает значения по умолчанию в качестве параметра если нечего читать:
     Settings.ZonesColor := IniFile.ReadInteger('Settings','ZonesColor',TAlphaColors.Navy);
    В данном случае, если в группе Settings не найдется параметр ZonesColor, то ReadInteger вернет значение Navy, если найдет вернет тот параметр, который там прописан.
    Я обычно при развертывании создаю INI файл  с начальными установками, сохраняю его и потом с ним работаю. 

     
  9. Like
    Ingalime отреагировална Tumaso в Требуется приложение на на все смартфоны   
    @Sashar333
    если вы из потока меняете визуальные компоненты в основном потоке приложения, то вам нужно оборачивать изменения визуальных компонентов в синхронизацию.
    А правильнее будет в потоке получить только данные, а созданием компонентов и их заполнением должен заниматься главный поток. Т.е. в потоке считываете данные в TStringList, а код парсинга этого текста переносите в форму
  10. Like
    Ingalime отреагировална juppy в [IOS] хранение данных   
    На мой скромный взгляд, самый простой сопсоб - это SQLite.
    Но можно и в ini.
    На мобильных платформах работает все как обычно.
    iniMapFile: TIniFile;
    iniMapFilePath := TPath.Combine(TPath.GetDocumentsPath, 'ИМЯФАЙЛА.ini');
    IniFile := TIniFile.Create(iniMapFilePath);
     
    Можно и в путь приложения сохранять.
     
  11. Like
    Ingalime получил реакцию от WebPuper в переход к x64?   
    Это выйдет в виде новой версии студии в середине этого года.
  12. Like
    Ingalime отреагировална Сергей Сергеев в 10.3.3 не видит IOS SDK   
    вообщем все заработало, проблема была в криво установленном Xcode ( устанавливал скачивая из developer.apple.com, установился в папку Загрузки) поэтому был не видим для PAS, перетащил в Программы и это оживило, потом для верности, еще и переустановил из АппСтор последний.
    решение здесь
  13. Like
    Ingalime отреагировална Vitaldj в скачать и запустить apk   
    Перечитал ваш пост несколько раз, но так и не понял вашей просьбы)))
  14. Like
    Ingalime отреагировална Slym в Сканер QR Кода зависает приложение   
    SharedActivity.startActivityForResult(intent, 0);
    результат получаешь в TMessageResultNotification
    intent.getStringExtra("SCAN_RESULT");
    intent.getStringExtra("SCAN_RESULT_FORMAT");
  15. Like
    Ingalime отреагировална Aleks133 в Сканер QR Кода зависает приложение   
    Сам не знаю как, но получилось)))пол дня читал форумы чтобы хоть что-то понять из этого.
    И методом "научного тыка" вот:
    uses androidapi.helpers, Androidapi.JNI.app,FMX.Helpers.Android, Androidapi.JNI.GraphicsContentViewText; var FMessageSubscriptionID:integer; procedure tform1.Scan1; var intent: JIntent; begin FMessageSubscriptionID := TMessageManager.DefaultManager.SubscribeToMessage(TMessageResultNotification, HandleActivityMessage); intent := TJIntent.Create; intent.setAction(StringToJString('com.google.zxing.client.android.SCAN')); SharedActivity.startActivityForResult(intent, 0); end; procedure TForm1.HandleActivityMessage(const Sender: TObject; const M:TMessage); var RequestCode, ResultCode: Integer; Intent: JIntent; s:string; begin if not(M is TMessageResultNotification) then exit; TMessageManager.DefaultManager.Unsubscribe(TMessageResultNotification, FMessageSubscriptionID); FMessageSubscriptionID := 0; RequestCode:=TMessageResultNotification(M).RequestCode; ResultCode:=TMessageResultNotification(M).ResultCode; Intent:=TMessageResultNotification(M).Value; if ResultCode = TJActivity.JavaClass.RESULT_OK then begin if Assigned(Intent) then begin s:=JStringToString(intent.getStringExtra(StringToJString('SCAN_RESULT'))); //получил результат со сканера convert(s); //использовал результат со сканера в своей процедуре end; end else if ResultCode = TJActivity.JavaClass.RESULT_CANCELED then begin //Memo1.Lines.Append('RESULT_CANCELED'); end; end; procedure TForm1.Button2Click(Sender: TObject); begin scan1; //запуск сканеровки; end; Не знаю правильно ли это все будет работать, но во всяком случае приложение не виснит(пока) и что хотел получил.
    Slym'у большое спасибо за наводку.
    Если кто знает что нужно добавить\исправить для гарантированно стабильной(без сюрпризов в дальнейшем) работы кода, буду благодарен.
  16. Like
    Ingalime отреагировална Slym в NetHTTPClient Compression?   
    Это "не стандартное" поведение, обычно клиент не сжимает, но RFC это не запрещает... но проверь поймет ли сервер твой запрос
    я использую deflate, gzip это тотже deflate столько с заголовками и CRC и заморочек в связи с этим больше...
     
    function CompressData(const Data:TBytes):TBytes; var Source, Dest:TBytesStream; begin   Dest:= TBytesStream.Create;   try     Source:=TBytesStream.Create(Data);     try       ZCompressStream(Source, Dest, zcMax);     finally       Source.Free;     end;     Dest.Size:=Dest.Size;     result:=Dest.Bytes;   finally     Dest.Free;   end; end; //AHTUNG! Non standart Request Header (with standart Name)! If truble - Rename то X-Content-Encoding   var Params:TBytes;   if length(Params)>MinCompressionSize then   begin     Params:=CompressData(Params);     NetHeaders.Value['Content-Encoding']:='deflate';   end;  
  17. Like
    Ingalime отреагировална Дмитрий Ш. в [Android] Шифрование   
    в дополнение преидущего поста, нашел бесплатное решение для Delphi у китайских коллег QDAC3
    uses qaes, NetEncoding; procedure TForm1.InitEncrypt(var AES: TQAES); var AKeyType: TQAESKeyType; const AInitVector: TQAESBuffer = (49, 50, 51, 52, 53, 54, 55, 56, 57, 48, 65, 66, 67, 68, 69, 70); // 1234567890ABCDEF begin AKeyType := kt128; AES.AsCBC(AInitVector, 'HJORNYCZJXJBUGOA', AKeyType); end; procedure TForm1.DecryptClick(Sender: TObject); var AES: TQAES; ABytes: TBytes; begin InitEncrypt(AES); MemoText.Lines.Clear; MemoText.Lines.Add(AES.Decrypt(TNetEncoding.Base64.DecodeStringToBytes(MemoQAES.Lines.Text))); end; procedure TForm1.EncryptClick(Sender: TObject); var AES: TQAES; ABytes: TBytes; begin InitEncrypt(AES); AES.Encrypt(Trim(MemoText.Lines.Text), ABytes); MemoQAES.Lines.Clear; MemoQAES.Lines.Add(TNetEncoding.Base64.EncodeBytesToString(ABytes)); end; проверка в GoLang и PHP работает, главное использовать вектор один 
     
  18. Like
    Ingalime отреагировална Дмитрий Ш. в [Android] Шифрование   
    Удалось зашифровать и дешифровать текст в трех ЯП Delphi, PHP, GoLang
    PHP. Используется phpseclib v1.0.7
    <?php // phpseclib 1.0.7 // http://phpseclib.sourceforge.net set_include_path('phpseclib'); include('Crypt/AES.php'); $my_key = 'HJORNYCZJXJBUGOA'; $my_iv = '1234567890ABCDEF'; $text = 'Проверка UTF8 текста'; $cipher = new Crypt_AES(); // CRYPT_AES_MODE_CBC $cipher->setKeyLength(128); $cipher->setKey($my_key); $cipher->setIV($my_iv); echo base64_encode($cipher->encrypt($text)).PHP_EOL;  
    Delphi. Использую TMS Cryptography Pack
    uses CryptBase, AESObj, MiscObj; function AesEncryption:String; var AES: TAESEncryption; begin AES := TAESEncryption.Create(nil); try AES.AType := atCBC; AES.KeyLength := kl128; AES.OutputFormat := base64; AES.Key := 'HJORNYCZJXJBUGOA'; AES.IVMode := AESObj.userdefined; AES.IV := '1234567890ABCDEF'; result := AES.Encrypt('Проверка UTF8 текста'); finally AES.Free; end; end; GoLang. Все родное. Запустить в песочнице
    package main import ( "bytes" "crypto/aes" "crypto/cipher" "encoding/base64" "fmt" ) func PKCS5Padding(src []byte, blockSize int) []byte { padding := blockSize - len(src)%blockSize padtext := bytes.Repeat([]byte{byte(padding)}, padding) return append(src, padtext...) } func PKCS5UnPadding(src []byte) []byte { length := len(src) unpadding := int(src[length-1]) return src[:(length - unpadding)] } func AesEncryption(key, iv, plainText []byte) ([]byte, error) { block, err := aes.NewCipher(key) if err != nil { return nil, err } blockSize := block.BlockSize() origData := PKCS5Padding(plainText, blockSize) blockMode := cipher.NewCBCEncrypter(block, iv) cryted := make([]byte, len(origData)) blockMode.CryptBlocks(cryted, origData) return cryted, nil } func AesDecryption(key, iv, cipherText []byte) ([]byte, error) { block, err := aes.NewCipher(key) if err != nil { return nil, err } blockMode := cipher.NewCBCDecrypter(block, iv) origData := make([]byte, len(cipherText)) blockMode.CryptBlocks(origData, cipherText) origData = PKCS5UnPadding(origData) return origData, nil } func main() { originalText := "Проверка UTF8 текста" fmt.Println(originalText) mytext := []byte(originalText) key := []byte("HJORNYCZJXJBUGOA") iv := []byte("1234567890ABCDEF") cryptoText, err := AesEncryption(key, iv, mytext) if err != nil { fmt.Println(err) } fmt.Println(base64.StdEncoding.EncodeToString(cryptoText)) decryptedText, _ := AesDecryption(key, iv, cryptoText) fmt.Println(string(decryptedText)) }  
    К сожалению бесплатной либы для Delphi, чтоб работало в WIN и Android не нашел.
     
  19. Like
    Ingalime отреагировална Dmitry Stolyarov в Получить фото из галереи через Intent   
    Рабочий код:
    procedure TForm1.HandleActivityMessage(const Sender: TObject; const M: TMessage); var RequestCode, ResultCode: Integer; Intent: JIntent; uri : Jnet_Uri; bitmap: JBitmap; surface: TBitmapSurface; begin if not(M is TMessageResultNotification) then exit; TMessageManager.DefaultManager.Unsubscribe(TMessageResultNotification, FMessageSubscriptionID); FMessageSubscriptionID := 0; RequestCode:=TMessageResultNotification(M).RequestCode; ResultCode:=TMessageResultNotification(M).ResultCode; Intent:=TMessageResultNotification(M).Value; if (ResultCode = TJActivity.JavaClass.RESULT_OK) and Assigned(Intent) then begin try uri:=Intent.getData; bitmap := TJImages_Media.JavaClass.getBitmap(SharedActivity.getContentResolver, uri); surface := TBitmapsurface.Create; JBitMapToSurface(bitmap,surface); Image1.Bitmap.Assign(surface); finally surface.Free; end; end;  
  20. Like
    Ingalime отреагировална POV в [IOS]Эфект сердца   
    Ну эффект линзы примени. и его параметры меняй. Чтобы с дисторсией было.
  21. Like
    Ingalime отреагировална slav_z в Срабатывает OnClick на ListBox при скроллинге   
    в OnClick элемента списка сделайте проверку:
    procedure TForm1.ListBoxItemClick(Sender: TObject); begin if not ListBox.AniCalculations.Moved then DoItemClick; end;  
  22. Like
    Ingalime отреагировална krapotkin в [IOS]Эфект сердца   
    http://docwiki.embarcadero.com/Libraries/Rio/en/FMX.Filter.Effects.TAffineTransformEffect
    не оно?
  23. Like
    Ingalime отреагировална Ra72 в Срабатывает OnClick на ListBox при скроллинге   
    Помогло, только для срабатывания OnTap пришлось на Item-ах установить HitTest=true. Думал скроллинг не будет работать, но нет, - работает. Выделение элемента только не работает, но оно мне не нужно.
  24. Like
    Ingalime отреагировална slav_z в Как добавить jar файл в проект   
    Теперь после сборки ваш класс java будет добавлен в файл classes.dex (да! файл classes.dex ниоткуда не копируется, он собирается из файлов которые указаны в этом списке (см.картинку) поэтому его можно легко дополнить собственными классами java или убрать ненужные системные).
    Остается вопрос компиляции файла исходников java в jar-файл, но тут уж каждый сам за себя...

  25. Like
    Ingalime отреагировална Maximus в C++Builder експорт с SQLite в MYSql проблемы с кодировками   
    Попробуйте так
    title = dm->qExpContent->FieldByName("title")->AsWideString; introtext = dm->qExpContent->FieldByName("introtext")->AsWideString; fulltext = dm->qExpContent->FieldByName("fulltext")->AsWideString;  
×
×
  • Создать...