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

Ошибка в FMX.Graphics.Android


Вопрос

[Delphi XE8, Android]

Ошибка в Studio\16.0\source\fmx\FMX.Graphics.Android.pas и соответственно в Studio\16.0\lib\android\release\FMX.Graphics.Android.o и Studio\16.0\lib\android\debug\FMX.Graphics.Android.o

Строка 258 function GetTmpFileName: String;

Выглядит так:

function GetTmpFileName: String;
begin
  Result := TPath.GetTempPath + 'TmpBitmapStream'
end;

Подозреваю что выглядеть должна вот так:

function GetTmpFileName: String;
begin
  Result := TPath.Combine(TPath.GetTempPath, 'TmpBitmapStream');
end;

Из за этой ошибки временный файл создается не в '/storage/emulated/0/Android/data/<application ID>/files/tmp' (TPath.GetTempPath), а в '/storage/emulated/0/Android/data/<application ID>/files' (TPath.GetSharedDocumentsPath).

 

 

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

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

  • 0

Здравствуйте.

Если Вы такой строкой определяете путь для сохранения файла, то разве не нужно добавить наклонную черту?

TPath.GetTempPath + TPath.DirectorySeparatorChar + 'TmpBitmapStream'
Изменено пользователем Alex7wrt
Ссылка на комментарий
  • 0
  • Модераторы

 

Здравствуйте.

Если Вы такой строкой определяете путь для сохранения файла, то разве не нужно добавить наклонную черту?

TPath.GetTempPath + TPath.DirectorySeparatorChar + 'TmpBitmapStream'

TPath.Combine делает это автоматически

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

А я думал что только у меня такая ошибка проявляется...

 

У меня нормально заработало только с такой строкой

Result := TPath.Combine( TPath.GetCachePath , 'TmpBitmapStream');

В tempPah все равно периодически выдавало ошибку прав доступа.

 

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

Изменено пользователем bigjorj
Ссылка на комментарий
  • 0

 

 

Здравствуйте.

Если Вы такой строкой определяете путь для сохранения файла, то разве не нужно добавить наклонную черту?

TPath.GetTempPath + TPath.DirectorySeparatorChar + 'TmpBitmapStream'

TPath.Combine делает это автоматически

 

Да. Я писал к первому коду. 

 

А я думал что только у меня такая ошибка проявляется...

 

У меня нормально заработало только с такой строкой

Result := TPath.Combine( TPath.GetCachePath , 'TmpBitmapStream');

В tempPah все равно периодически выдавало ошибку прав доступа.

 

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

Можете попробовать tpath.GetHomePath+tpath.DirectorySeparatorChar+'TmpBitmapStream';

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

 

Здравствуйте.

Если Вы такой строкой определяете путь для сохранения файла, то разве не нужно добавить наклонную черту?

TPath.GetTempPath + TPath.DirectorySeparatorChar + 'TmpBitmapStream'

TPath.Combine (http://docwiki.embarcadero.com/Libraries/XE8/en/System.IOUtils.TPath.Combine) как раз этим и занимается в моем исправлении. В первом варианте не я определяю такой путь сохранения файла, а программисты Embarcadero.

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

А я думал что только у меня такая ошибка проявляется...

 

У меня нормально заработало только с такой строкой

Result := TPath.Combine( TPath.GetCachePath , 'TmpBitmapStream');

В tempPah все равно периодически выдавало ошибку прав доступа.

 

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

Так с TPath.GetCachePath работает без разрешения на чтение/запись внешнего хранилища? Или все таки глючит?

 

P.S. Зачем вообще сохранять эту картинку? Ради этого глюка приходится давать лишние разрешения приложению и терять параноидальную часть аудитории :-( Вот кстати и картинка:

tmpTmpBitmapStream.png

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

Да с GetCachePath работает без нареканий.

Могу обмануть, но этот механизм используется только для анройда 5 версии. Это способ исправления бага при котором приложения на XE7 висли при попытке вывода картинки из TStream. А здесь сначала записывается в файл, а потом считывается уже в контрол. А то что вы показали, это элемент стиля. 

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

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

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

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

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

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

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

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

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

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

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