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

[Android] Как очистить буфер обмена в С++ Builder XE7?


Андрей

Вопрос

Рекомендуемые сообщения

  • 0
  • Администраторы

Добрый день,

 

Посмотрите тему Как скопировать текст в буфер обмена?

Чтобы очистить, нужно в буфер поместить TValue.Empty.

Ссылка на комментарий
  • 0

Пытаюсь сделать так:

#include <FMX.Platform.hpp>

_di_IInterface Intf;
if (TPlatformServices::Current->SupportsPlatformService(__uuidof(IFMXClipboardService), Intf))
{
_di_IFMXClipboardService ClipboardService = Intf;
ClipboardService->SetClipboard(TValue::Empty);
}

Компилируется нормально. При выполнении вываливается "Access violation at address 5A73D16A, accessing adress 00000003".

Ссылка на комментарий
  • 0

Вот рабочий код:

#include <FMX.Platform.hpp>
#include <System.IOUtils.hpp>

 //очистка буфера обмена
if (TPlatformServices::Current->SupportsPlatformService(__uuidof(IFMXClipboardService)))
  {
   _di_IFMXClipboardService ClipboardService = TPlatformServices::Current->GetPlatformService(__uuidof(IFMXClipboardService));
   ClipboardService->SetClipboard(TValue::Empty);
  }

Но в буфере все равно остается (empty). Как же все таки очистить полностью?

Ссылка на комментарий
  • 0
В 18.04.2015 в 18:40, Андрей сказал:

Вот рабочий код:


#include <FMX.Platform.hpp>
#include <System.IOUtils.hpp>

 //очистка буфера обмена
if (TPlatformServices::Current->SupportsPlatformService(__uuidof(IFMXClipboardService)))
  {
   _di_IFMXClipboardService ClipboardService = TPlatformServices::Current->GetPlatformService(__uuidof(IFMXClipboardService));
   ClipboardService->SetClipboard(TValue::Empty);
  }

Но в буфере все равно остается (empty). Как же все таки очистить полностью?

Тоже столкнулся с такой проблемой.

Решил таким образом:

 

var
  а: IFMXClipBoardService;
begin
 
  if TPlatformServices.Current.SupportsPlatformService(IFMXClipBoardService, Service) then
var
  а: IFMXClipBoardService;
begin

  if TPlatformServices.Current.SupportsPlatformService(IFMXClipBoardService, Service) then
    Service.SetClipboard('');

 

Ссылка на комментарий
  • 1

Начиная с XE7 надо ставить &, и у TValue есть шаблон генерации по типу. Вот так работает в Berlin:

void __fastcall TForm1::Button2Click(TObject *Sender)
{
    _di_IFMXClipboardService Intf;
    if (TPlatformServices::Current->SupportsPlatformService(__uuidof(IFMXClipboardService), &Intf))
    {
        Intf->SetClipboard(TValue::From<String>(""));
    }
}

Ссылка на комментарий

Присоединяйтесь к обсуждению

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

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...