gresaggr
-
Постов
26 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные gresaggr
-
-
Не удалось найти решение для отправки письма через IdSMTP для Андроида 7+?
-
Добрый день.
Пытаюсь парсить следующую структуру (в архиве файл test.json) через XSuperObject
в jSonData находится содержимое файла архива.
var
X: ISuperObject;
jSonData: string;...
if jSonData <> '' then
try
X := SO(jSonData);
except
print('jSonData: ' + jSonData);
result := 'PARS ERROR';
exit;
end;выдает ошибку на моменте "... \u0438 60":"40\n\u0417..."
Как можно исправить?
-
Так и не понял в чем была ошибка. Создал еще раз заново новый проект и заработало.
Спасибо.
-
Именно по этому примеру и делал: при первом запуске появляется запрос на разрешение доступа к фото и на запись (после выхода из приложения в общих настройках приложения можно проверить, что доступ получен правильно). А дальше на выполнении TakeFotoFromCamera вылетает эта ошибка.
P.S. Делаю на Community Edition.
-
Всем привет.
Пробую Delphi 10.3 Community Edition.
При попытке через стандартный Action сделать фото получаю ошибку: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.XmlResourceParser...
Пытался и с текущим проектом, и с новым (где только одна кнопка сделать фото + получение разрешений). Проверял на Андроид 8 на двух телефонах. Разрешения получены нормально на чтение/запись + доступ к камере.
Как-то можно победить?
-
Всем привет.
Работаю с DCEF3 последней ветки (https://github.com/hgourvest/dcef3). Использую Delphi 10.1
Нужно сделать две одновременно запущенных web версии whatsapp (https://web.whatsapp.com/)
Динамически создаются два экземпляра Chromium с разными именами, user agent.
Сначала создается первый и в нем появляется QR-код для авторизации через телефон.
После создания второго - в первом QR код исчезает и появляется ТОЛЬКО во втором.
Я так понимаю проблема в куках.
Может кто знает как можно задать отдельную папку/хранить в память для каждого экземпляра?Сейчас задаю таким образом глобальный куки менеджер:
CookiesPath := ExtractFilePath(Application.ExeName) + DEFAULT_COOKIES_DIR + currentNumber.ToString; CM := TCefCookieManagerRef.Global(nil); CM.SetStoragePath(CookiesPath, true, nil);
P.S. Если запускать копию exe из той же папки где находятся все ресурсы хромиума, то такой проблемы нет.
P.P.S. Еще заметил, что авторизованная сессия whatsapp не сохраняется после перезапуска программы. А тот же mail.ru сохраняется.
-
procedure TmainForm.Item_LVUpdatingObjects(const Sender: TObject; const AItem: TListViewItem;
var AHandled: Boolean);
begin
Item_LV.ItemAppearanceObjects.ItemObjects.Detail.Font.Style :=
Item_LV.ItemAppearanceObjects.ItemObjects.Detail.Font.Style + [TFontStyle.fsUnderline];
end; -
В 14.01.2018 в 22:07, Равиль Зарипов (ZuBy) сказал:
Можно сделать если обрабатывать это в событии OnUpdateItemObjects
К сожалению не получается: OnUpdateItemObjects - такого события не нашел у ListView.
Делал и в UpdatingObjects, и в UpdateObjects, но без результата.
-
Добрый день.
Как под FMX в ListView сделать подчеркивание Detail в рантайме?
Пытался делать так:
LV.ItemAppearanceObjects.ItemObjects.Detail.Font.Style := [TFontStyle.fsUnderline]
но не срабатывает.
P.S. Возможно это применить не ко всем строкам, а только к некоторым?
-
Также делал и через putString.
Видимо действительно закрыли этот путь
-
1 час назад, Wovan2 сказал:
Может отсюда http://developer.alexanderklimov.ru/android/theory/airplanemode.php можно что-то выжать? Написано на С#, но, в принципе, код понятен.
Делаю так TJSettings_System.JavaClass.putInt(SharedActivityContext.getContentResolver, TJSettings_System.JavaClass.AIRPLANE_MODE_ON, 1)
Permissons на
WRITE_SETTINGS выставил. Не переключает.
Upd. "
Так как, начиная с Android 4.2, мы не можем программно включить режим автономного режима, то остаётся только один вариант - показать окно настроек, чтобы пользователь сам отметил флажком требуемую настройку:"
Других вариантов судя по всему нет?
-
Добрый день.
Как включить и выключить режим полета на delphi под Андроид?
-
Спасибо всем за советы.
Пока реализовал по методу уважаемого ZuBy из данного сообщения:
-
-
7 часов назад, AlexG сказал:
В Designmode разместите кнопки "как видите" их на форме (как они должны быть расположены), а потом левой кнопке поставьте Align = None и Anchors[akLeft,akBottom], а правой Align = None и Anchors[akRight,akBottom]. Думаю, что этого будет достаточно.
P.S. Ну и как все будет закончено с их расположением, поставьте им Locked = True (дабы не сместить их ненароком)
К сожалению так не получается: все равно происходит смещение.
-
Всем добрый день.
Дошло дело до дизайна приложения. Как правильно разместить кнопки поверх изображения фона?
Исходные данные такие: Delphi 10.1 Berlin Update2. Приложение под Андроид.
Есть фон в разрешении 1280*720.. На форме есть Layout с Align = Client. В Layout вставлен Image с Align = Client.
Есть отдельные кнопки (на первом рисунке выделены черно-белым цветом). Как правильно сделать вставку кнопок, чтобы попасть на нижнюю кромку фона правил?
Еще хочется сделать это универсальным для разных разрешений экрана.
if res = 1280 then
begin
LayoutRulesText1.Margins.Top := 30;
LayoutRulesText1.Margins.Bottom := 80;
LayoutRulesText1.Margins.Left := 30;
LayoutRulesText1.Margins.Right := 30;
ImageRulesBack.Position.X := 50;
ImageRulesBack.Position.Y := 510;
ImageRulesBack.Width := 55;
ImageRulesBack.Height := 55;ImageRulesForward.Position.X := 250;
ImageRulesForward.Position.Y := 510;
ImageRulesForward.Width := 55;
ImageRulesForward.Height := 55;
end;
Изначально думал делать для каждого разрешения через case в зависимости от разрешения, но кажется что этот путь совсем неправильный!
-
3 минуты назад, kami сказал:
System.IOUtils в uses поставить после модуля, в котором описан компонент TPath (делфи не под рукой, не скажу в каком конкретно).
Поставил в самом конце. Помогло.
Спасибо!
-
Добрый день.
Работал над проектом, все нормально компилировалось. В процессе работы отключилось электричество. Из последних изменений до новой компиляции был добавлен Image с загруженным png (свет отключили).
После загрузки не компилируется и выдает ошибки на строке: tmp := TPath.Combine(TPath.GetSharedDocumentsPath, tmp + '.txt'); (Tpath does not contain a member named 'Combine')
Undeclared identifier: 'Combine'
Undeclared identifier: 'GetSharedDocumentsPath'в Uses помимо прочего прописан System.IOUtils.
Проверял на двух разных компьютерах (Win 7/64)
Из-за чего такое могло произойти и как быть?
Update:вручную прописал tmp := System.IOUtils.TPath.Combine(System.IOUtils.TPath.GetSharedDocumentsPath, tmp + '.txt');
Ошибка исчезла, но хочется нормального решения.
-
10 минут назад, krapotkin сказал:
procedure TForm1.b1Click(Sender: TObject); begin b1.Enabled := false; m1.Lines.Add('test'); TTask.Run( procedure begin sleep(2000); TThread.Synchronize(nil, procedure begin b1.Enabled := True; end); end); end;
Огромное вам спасибо! Теперь все работает корректно!
-
4 минуты назад, krapotkin сказал:
и да, я не понял, что должно быть по-вашему в коде
procedure TForm1.b1Click(Sender: TObject); begin b1.Enabled := false; m1.Lines.Add('test'); Sleep(1000); b1.Enabled := true; end;
?
натыкал 5 раз. получил через пять секунд пять строчек test. потому что просто не успевает отображаться каждая очередная строка, т.к. вызывается вновь обработчик
что не так ?
Я хочу чтобы было так:
К примеру клик. Enable = false. Началась пауза. В момент паузы еще успели кликнуть три раза. Пауза завершилась. Enable=true. Вот эти три клика в момент паузы не должны считаться.
-
Кому не сложно, попробуйте у себя проверить:
Button1.Enabled:=false;
Memo1.Lines.Add ('тест'); // или что-то другое сделать, чтобы можно было отследить
пауза
Button1.Enabled:=true;
И несколько раз быстро нажмите на кнопку. Запуск не под Windows, а под Android.
Как у вас все это отобразится?
Может быть чего-то недопонимаю, но неужели на такую элементарную штуку, как нажатие на кнопку нужно "...после этого запустить поток, который 1. делает все что там вам нужно 2. при окончании работы разблокирует кнопку" и т.п.?
P.S. В моем случае логика была отделена от интерфейса: // здесь код по смене карты + пауза в 2 секунды: в этом месте вызывается процедура. Или в нее также рекомендуете убрать enable кнопки?
-
Как избежать повторных нажатий/ закликиваний на кнопку?
Имеется следующий код:
procedure Tfm.ButtonPrevCardClick(Sender: TObject);
begin
ButtonPrevCard.Enabled := false;
Application.ProcessMessages;
// здесь код по смене карты + пауза в 2 секунды
ButtonPrevCard.Enabled := true;
Application.ProcessMessages;
end;Под Windows повторных нажатий/закликиваний при этом не происходит.
А под Андроид, если пользователь быстро подряд нажал несколько раз, то сработает также несколько раз.
-
2 часа назад, ZuBy сказал:
Вы пробовали то что я вам предложил?
Ошибка заключалась в том, что вы не указываете в какой кодировке файл, для этого в LoadFromFile есть второй параметр в котором можно указать кодировку загружаемого файла
Да, ваш вариант рабочий. Пожалуй, оставлю его - с деплоем удобней файлы заливать.
Спасибо.
-
Победил через ресурсы и StringList:
NounsStringList.BeginUpdate; rs := TResourceStream.Create(hInstance, 'nouns', RT_RCDATA); try NounsStringList.LoadFromStream(rs); finally rs.Free; end; NounsStringList.EndUpdate;
Спасибо за помощь.
Почему не очищается ImageList ?
в TImageList - с XE8
Опубликовано
if ImageList1.Count> 0 then for I := 0 to ImageList1.Count -1 do