Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2      [все]
 Не работает try except на Андроиде 7.0  [new]
Sergey_rb
Member

Откуда:
Сообщений: 956
Delphi 8 (RAD)

Не работает try except на Андроиде 7.0
При возникновении ошибки приложение вылетает без сообщения.

Есть какие-то варианты ловить ошибку на Андроиде?
19 фев 21, 11:51    [22283351]     Ответить | Цитировать Сообщить модератору
 Re: Не работает try except на Андроиде 7.0  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 4987
Sergey_rb,

Какое исключение-то? Если аппаратное, то смотрти доку.
19 фев 21, 11:58    [22283358]     Ответить | Цитировать Сообщить модератору
 Re: Не работает try except на Андроиде 7.0  [new]
Sergey_rb
Member

Откуда:
Сообщений: 956
Вот такое исключение

  try
    INI := TINIFile.Create('test.ini');
  except on e: exception do
    ShowMessage(e.Message);
  end;
19 фев 21, 12:18    [22283373]     Ответить | Цитировать Сообщить модератору
 Re: Не работает try except на Андроиде 7.0  [new]
rgreat
Member

Откуда:
Сообщений: 6563
Kazantsev Alexey,

Интересно что им помешало сделать невидимый фиктивный вызов функции внутри try/except на анроиде?
19 фев 21, 12:20    [22283377]     Ответить | Цитировать Сообщить модератору
 Re: Не работает try except на Андроиде 7.0  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 4987
Sergey_rb
Вот такое исключение

Класc какой?

rgreat
Интересно что им помешало сделать невидимый фиктивный вызов функции внутри try/except на анроиде?

Видимо то же, что помешало и оптимизации ллвм'овские использовать. Это, кстати, не только ведроида касается, а вообще всех некстгенов.
19 фев 21, 12:26    [22283382]     Ответить | Цитировать Сообщить модератору
 Re: Не работает try except на Андроиде 7.0  [new]
Sergey_rb
Member

Откуда:
Сообщений: 956
Kazantsev Alexey
Sergey_rb
Вот такое исключение

Класc какой?

rgreat
Интересно что им помешало сделать невидимый фиктивный вызов функции внутри try/except на анроиде?

Видимо то же, что помешало и оптимизации ллвм'овские использовать. Это, кстати, не только ведроида касается, а вообще всех некстгенов.


Класс
TINIFile
19 фев 21, 12:27    [22283384]     Ответить | Цитировать Сообщить модератору
 Re: Не работает try except на Андроиде 7.0  [new]
Sergey_rb
Member

Откуда:
Сообщений: 956
rgreat
Kazantsev Alexey,

Интересно что им помешало сделать невидимый фиктивный вызов функции внутри try/except на анроиде?


Чтобы на Дельфи не писали, а переходили на Андроид студию.
19 фев 21, 12:28    [22283386]     Ответить | Цитировать Сообщить модератору
 Re: Не работает try except на Андроиде 7.0  [new]
rgreat
Member

Откуда:
Сообщений: 6563
Kazantsev Alexey
Видимо то же, что помешало и оптимизации ллвм'овские использовать.

Ну оптимизации могут в теории и всякие сбои давать. Да и и так не высокую скорость работы компилятора снизить.
Могли это на потом оставить. Это все не столь важно, в общем.

А вот ненадежная работа try/except это явная и заведомая ошибка архитектора.

Сообщение было отредактировано: 19 фев 21, 12:28
19 фев 21, 12:32    [22283394]     Ответить | Цитировать Сообщить модератору
 Re: Не работает try except на Андроиде 7.0  [new]
Sergey_rb
Member

Откуда:
Сообщений: 956
Говорят, что до версии ведроида 6.0 try/except работал, значит умышленно убрали.
19 фев 21, 12:35    [22283397]     Ответить | Цитировать Сообщить модератору
 Re: Не работает try except на Андроиде 7.0  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 4987
Sergey_rb
Класс
TINIFile

Класс исключения.

rgreat
А вот костыль с try/except это явное заведомое упущение.

К слову, ни Oxygene, ни FPC c LLVM бэкендом такие исключения тоже не перехватывают, но в FPC эта задача значится в списке.
19 фев 21, 12:56    [22283417]     Ответить | Цитировать Сообщить модератору
 Re: Не работает try except на Андроиде 7.0  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 4987
Sergey_rb
Говорят, что до версии ведроида 6.0 try/except работал, значит умышленно убрали.

https://stackoverflow.com/questions/38243473/exception-handling-broken-in-delphi-xe8-android
19 фев 21, 12:59    [22283422]     Ответить | Цитировать Сообщить модератору
 Re: Не работает try except на Андроиде 7.0  [new]
rgreat
Member

Откуда:
Сообщений: 6563
Kazantsev Alexey,

Типа в 10.4 пофиксили?
19 фев 21, 13:09    [22283434]     Ответить | Цитировать Сообщить модератору
 Re: Не работает try except на Андроиде 7.0  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 4987
rgreat
Типа в 10.4 пофиксили?

Не, там о другом.
19 фев 21, 13:16    [22283440]     Ответить | Цитировать Сообщить модератору
 Re: Не работает try except на Андроиде 7.0  [new]
Sergey_rb
Member

Откуда:
Сообщений: 956
В общем надо решать вопрос, на чем писать для терминала сбора данных для Андроида.
19 фев 21, 13:48    [22283486]     Ответить | Цитировать Сообщить модератору
 Re: Не работает try except на Андроиде 7.0  [new]
asutp2
Member

Откуда: Тюмень
Сообщений: 729
http://docwiki.embarcadero.com/RADStudio/Sydney/en/Migrating_Delphi_Code_to_Mobile_from_Desktop
раздел Use a Function Call in a try-except Block to Prevent Uncaught Hardware Exceptions

т.е. вместо

  try
    INI := TINIFile.Create('test.ini');
  except on e: exception do
    ShowMessage(e.Message);
  end;

делаешь
  procedure T;
  begin
    INI := TINIFile.Create('test.ini');
  end;
   
  try
    T;
  except on e: exception do
    ShowMessage(e.Message);
  end;
19 фев 21, 15:17    [22283534]     Ответить | Цитировать Сообщить модератору
 Re: Не работает try except на Андроиде 7.0  [new]
Sergey_rb
Member

Откуда:
Сообщений: 956
asutp2,

Не прокатило, вылетел без сообщений

procedure TForm1.btnOkClick(Sender: TObject);
begin
  try
    LoadINI;
  except on e: exception do
    ShowMessage(e.Message);
  end;
end;

procedure TForm1.LoadINI;
var
  INI: TINIFile;
begin
    INI := TINIFile.Create('test.ini');
end;


Сообщение было отредактировано: 19 фев 21, 16:00
19 фев 21, 15:32    [22283546]     Ответить | Цитировать Сообщить модератору
 Re: Не работает try except на Андроиде 7.0  [new]
asutp2
Member

Откуда: Тюмень
Сообщений: 729
Sergey_rb,

отучитесь на андроиде использовать ShowMessage
19 фев 21, 15:49    [22283554]     Ответить | Цитировать Сообщить модератору
 Re: Не работает try except на Андроиде 7.0  [new]
Sergey_rb
Member

Откуда:
Сообщений: 956
asutp2
Sergey_rb,

отучитесь на андроиде использовать ShowMessage


Почему?
Сам по себе ShowMessage работает.
19 фев 21, 16:01    [22283563]     Ответить | Цитировать Сообщить модератору
 Re: Не работает try except на Андроиде 7.0  [new]
inbox
Member [заблокирован]

Откуда:
Сообщений: 17
Я бы запустил проект под отладкой, и посмотрел почему не срабатывает исключение.


Без отладки вообще нечего делать, это как тыкать писей в пруд(Может поймаешь рыбку).

Сообщение было отредактировано: 19 фев 21, 15:55
19 фев 21, 16:02    [22283564]     Ответить | Цитировать Сообщить модератору
 Re: Не работает try except на Андроиде 7.0  [new]
Sergey_rb
Member

Откуда:
Сообщений: 956
inbox
Я бы запустил проект под отладкой, и посмотрел почему не срабатывает исключение.


Без отладки вообще нечего делать, это как тыкать писей в пруд(Может поймаешь рыбку).


Исключение не срабатывает из-за версий Delphi и Android.
19 фев 21, 16:06    [22283569]     Ответить | Цитировать Сообщить модератору
 Re: Не работает try except на Андроиде 7.0  [new]
Kast2K
Member

Откуда: Санкт-Петербург
Сообщений: 520
попробуйте так
uses FMX.Helpers.Android;

procedure TTestForm.ShowInformationMessage(const AText: string);
  CallInUiThread (
        procedure
        begin
          TJToast.JavaClass.makeText (TAndroidHelper.Context,
              StrToJCharSequence(AText), TJToast.JavaClass.LENGTH_LONG).show;
        end
  );
end;


Сообщение было отредактировано: 19 фев 21, 16:27
19 фев 21, 16:31    [22283588]     Ответить | Цитировать Сообщить модератору
 Re: Не работает try except на Андроиде 7.0  [new]
asutp2
Member

Откуда: Тюмень
Сообщений: 729
Sergey_rb,

а кстати, какая именно версия делфи используется?)
19 фев 21, 16:33    [22283590]     Ответить | Цитировать Сообщить модератору
 Re: Не работает try except на Андроиде 7.0  [new]
inbox
Member [заблокирован]

Откуда:
Сообщений: 17
Sergey_rb

Исключение не срабатывает из-за версий Delphi и Android.


Что такое исключение ? Давайте разберёмся для начало в этом.

Простой пример
uses
  System.SysUtils;

begin
  try
    Raise Exception.Create('Test Exception');
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;

end.


Отладчик говорит
Project1.dpr.11: Raise Exception.Create('Test Exception');
0041E5A4 B940E64100       mov ecx,$0041e640
0041E5A9 B201             mov dl,$01
0041E5AB A130344100       mov eax,[$00413430]
0041E5B0 E847AAFFFF       call Exception.Create
0041E5B5 E84A85FEFF       call @RaiseExcept



То есть, создаётся класс, и вызывается RaiseExcept


По сути, нам надо отследить, что происходит при вызове

procedure _RaiseAtExcept(Obj: TObject; Address: Pointer);
var
  Params: Array[0..6] of NativeUInt;
  ExceptionRecord: TExceptionRecord;
  //CurRaiseFrame: PRaiseFrame;
begin
  if Obj = nil then
    _RunError(216); // reAccessViolation

  Params[0] := UIntPtr(Address);
  Params[1] := UIntPtr(Pointer(Obj));
  Params[2] := 0 {EBX};
  Params[3] := 0 {ESI};
  Params[4] := 0 {EDI};
  Params[5] := 0 {EBP};
  Params[6] := 0 {ESP};

  if RaiseExceptObjProc <> nil then
  begin
    //CurRaiseFrame := RaiseListPtr;
    ExceptionRecord.ExceptionCode := cDelphiException;
    ExceptionRecord.ExceptionFlags := cNonContinuable;
    ExceptionRecord.ExceptionRecord := nil;
//  if CurRaiseFrame <> nil then
//    ExceptionRecord.ExceptionRecord := CurRaiseFrame^.ExceptionRecord;
    ExceptionRecord.ExceptionAddress := Address;
    ExceptionRecord.NumberParameters := 7;
    ExceptionRecord.ExceptionInformation[0] := Params[0];
    ExceptionRecord.ExceptionInformation[1] := Params[1];
    ExceptionRecord.ExceptionInformation[2] := Params[2];
    ExceptionRecord.ExceptionInformation[3] := Params[3];
    ExceptionRecord.ExceptionInformation[4] := Params[4];
    ExceptionRecord.ExceptionInformation[5] := Params[5];
    ExceptionRecord.ExceptionInformation[6] := Params[6];
    TRaiseExceptObjProc(RaiseExceptObjProc)(@ExceptionRecord);
  end;
  RaiseExceptionProc(cDelphiException, cNonContinuable, 7, @Params);
end;
19 фев 21, 16:49    [22283601]     Ответить | Цитировать Сообщить модератору
 Re: Не работает try except на Андроиде 7.0  [new]
Sergey_rb
Member

Откуда:
Сообщений: 956
asutp2
Sergey_rb,

а кстати, какая именно версия делфи используется?)


Delphi 8
Android 7.0

В первом посте написано...
19 фев 21, 16:52    [22283603]     Ответить | Цитировать Сообщить модератору
 Re: Не работает try except на Андроиде 7.0  [new]
rgreat
Member

Откуда:
Сообщений: 6563
Sergey_rb
Delphi 8
Что-что?!
19 фев 21, 16:55    [22283605]     Ответить | Цитировать Сообщить модератору
 Re: Не работает try except на Андроиде 7.0  [new]
Sergey_rb
Member

Откуда:
Сообщений: 956
inbox,

У меня есть подозрение, что на Андроиде код не доходит до Raise, вместо этого просто останавливается приложение.
19 фев 21, 16:56    [22283606]     Ответить | Цитировать Сообщить модератору
 Re: Не работает try except на Андроиде 7.0  [new]
asutp2
Member

Откуда: Тюмень
Сообщений: 729
Sergey_rb,

что то я сильно сомневаюсь, что вы используете Delphi 8, которая была выпущена в декабре 2003 года и которая не поддерживает андроид в принципе))))
19 фев 21, 16:56    [22283607]     Ответить | Цитировать Сообщить модератору
 Re: Не работает try except на Андроиде 7.0  [new]
Sergey_rb
Member

Откуда:
Сообщений: 956
Kast2K
попробуйте так
uses FMX.Helpers.Android;

procedure TTestForm.ShowInformationMessage(const AText: string);
  CallInUiThread (
        procedure
        begin
          TJToast.JavaClass.makeText (TAndroidHelper.Context,
              StrToJCharSequence(AText), TJToast.JavaClass.LENGTH_LONG).show;
        end
  );
end;



А это интересный вариант, надо попробовать.
19 фев 21, 16:58    [22283609]     Ответить | Цитировать Сообщить модератору
 Re: Не работает try except на Андроиде 7.0  [new]
Sergey_rb
Member

Откуда:
Сообщений: 956
asutp2
Sergey_rb,

что то я сильно сомневаюсь, что вы используете Delphi 8, которая была выпущена в декабре 2003 года и которая не поддерживает андроид в принципе))))


Прочитайте первое сообщение
Delphi 8 от RAD Studio
19 фев 21, 16:59    [22283611]     Ответить | Цитировать Сообщить модератору
 Re: Не работает try except на Андроиде 7.0  [new]
inbox
Member [заблокирован]

Откуда:
Сообщений: 17
Он имел введу XE8 А вы как вцепились, лишь бы орнуть.
19 фев 21, 17:01    [22283614]     Ответить | Цитировать Сообщить модератору
 Re: Не работает try except на Андроиде 7.0  [new]
rgreat
Member

Откуда:
Сообщений: 6563
Sergey_rb
Прочитайте первое сообщение
Delphi 8 от RAD Studio
Картинка с другого сайта.
19 фев 21, 17:01    [22283615]     Ответить | Цитировать Сообщить модератору
 Re: Не работает try except на Андроиде 7.0  [new]
inbox
Member [заблокирован]

Откуда:
Сообщений: 17
rgreat,

Хватит показывать свой низкий интеллект.
19 фев 21, 17:02    [22283617]     Ответить | Цитировать Сообщить модератору
 Re: Не работает try except на Андроиде 7.0  [new]
rgreat
Member

Откуда:
Сообщений: 6563
inbox
Он имел введу XE8 А вы как вцепились, лишь бы орнуть.

Даже если это XE8 - это древнее говно.
Пусть ставит хотя бы XE 10.3 CE и тестит.
19 фев 21, 17:02    [22283619]     Ответить | Цитировать Сообщить модератору
 Re: Не работает try except на Андроиде 7.0  [new]
rgreat
Member

Откуда:
Сообщений: 6563
inbox
Хватит показывать свой низкий интеллект.
В точных науках лучше "низкий интеллект" чем "бурная фантазия".
19 фев 21, 17:03    [22283622]     Ответить | Цитировать Сообщить модератору
 Re: Не работает try except на Андроиде 7.0  [new]
asutp2
Member

Откуда: Тюмень
Сообщений: 729
Sergey_rb
asutp2
Sergey_rb,

что то я сильно сомневаюсь, что вы используете Delphi 8, которая была выпущена в декабре 2003 года и которая не поддерживает андроид в принципе))))


Прочитайте первое сообщение
Delphi 8 от RAD Studio
Вы Delphi 8 от Delphi XE8 не отличаете?)))
Для справки, в XE8 нет поддержки Android 7
Нужно использовать как минимум 10.3.3
19 фев 21, 17:04    [22283623]     Ответить | Цитировать Сообщить модератору
 Re: Не работает try except на Андроиде 7.0  [new]
inbox
Member [заблокирован]

Откуда:
Сообщений: 17
rgreat
inbox
Хватит показывать свой низкий интеллект.
В точных науках лучше "низкий интеллект" чем "бурная фантазия".


Он даже про Delphi 8 не в курсе. И не понимает вашего бессмысленного рофла.


По этому, вы глумитесь над человеком который не смыслит на развитие Delphi. Для него 8 это XE8
19 фев 21, 17:04    [22283625]     Ответить | Цитировать Сообщить модератору
 Re: Не работает try except на Андроиде 7.0  [new]
inbox
Member [заблокирован]

Откуда:
Сообщений: 17
inbox

По этому, вы глумитесь над человеком который не смыслит на развитие Delphi. Для него 8 это XE8


По этому я могу по глумиться над вами, что будет более объективнее и имеет больше смысла.

"ХА-ХАА, Во дают - отличить Delphi с Android от Delphi 2008 не омгут "
19 фев 21, 17:06    [22283627]     Ответить | Цитировать Сообщить модератору
 Re: Не работает try except на Андроиде 7.0  [new]
rgreat
Member

Откуда:
Сообщений: 6563
inbox
Он даже про Delphi 8 не в курсе. И не понимает вашего бессмысленного рофла.

У нас ситуация: "через рофлы к знаниям".
19 фев 21, 17:07    [22283629]     Ответить | Цитировать Сообщить модератору
 Re: Не работает try except на Андроиде 7.0  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 4987
inbox
По этому я могу по глумиться над вами, что будет более объективнее и имеет больше смысла.

"ХА-ХАА, Во дают - отличить Delphi с Android от Delphi 2008 не омгут "

О, Няшик оттаял
19 фев 21, 17:10    [22283632]     Ответить | Цитировать Сообщить модератору
 Re: Не работает try except на Андроиде 7.0  [new]
rgreat
Member

Откуда:
Сообщений: 6563
inbox
По этому я могу по глумиться над вами, что будет более объективнее и имеет больше смысла.

"ХА-ХАА, Во дают - отличить Delphi с Android от Delphi 2008 не омгут "

Картинка с другого сайта.
19 фев 21, 17:13    [22283634]     Ответить | Цитировать Сообщить модератору
 Re: Не работает try except на Андроиде 7.0  [new]
inbox
Member [заблокирован]

Откуда:
Сообщений: 17
Kazantsev Alexey

О, Няшик оттаял


Много девственниц в жертву принесли? Что бы узнать кто по ту сторону экрана.
19 фев 21, 17:15    [22283635]     Ответить | Цитировать Сообщить модератору
 Re: Не работает try except на Андроиде 7.0  [new]
Sergey_rb
Member

Откуда:
Сообщений: 956
Если у человека машина - десятка, то все знают что это ВАЗ-2110.
19 фев 21, 17:18    [22283638]     Ответить | Цитировать Сообщить модератору
 Re: Не работает try except на Андроиде 7.0  [new]
Sergey_rb
Member

Откуда:
Сообщений: 956
asutp2
Sergey_rb
пропущено...


Прочитайте первое сообщение
Delphi 8 от RAD Studio
Вы Delphi 8 от Delphi XE8 не отличаете?)))
Для справки, в XE8 нет поддержки Android 7
Нужно использовать как минимум 10.3.3


У меня сейчас вопрос выбора языка - Delphi или Java или, на крайний случай C#/С++.
19 фев 21, 17:21    [22283639]     Ответить | Цитировать Сообщить модератору
 Re: Не работает try except на Андроиде 7.0  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 31969

19.02.2021 17:21, Sergey_rb пишет:
> У меня сейчас вопрос выбора языка - Delphi или Java или, на крайний случай C#/С++.

бери Питон.

Posted via ActualForum NNTP Server 1.5

19 фев 21, 17:24    [22283643]     Ответить | Цитировать Сообщить модератору
 Re: Не работает try except на Андроиде 7.0  [new]
Sergey_rb
Member

Откуда:
Сообщений: 956
Мимопроходящий,

Проходите мимо...
19 фев 21, 17:29    [22283648]     Ответить | Цитировать Сообщить модератору
 Re: Не работает try except на Андроиде 7.0  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 12572
Sergey_rb
Delphi 8
Android 7.0

В первом посте написано...
Вам же сразу написали
Kazantsev Alexey
https://stackoverflow.com/questions/38243473/exception-handling-broken-in-delphi-xe8-android
19 фев 21, 18:12    [22283683]     Ответить | Цитировать Сообщить модератору
 Re: Не работает try except на Андроиде 7.0  [new]
ъъъъъ
Member

Откуда:
Сообщений: 1769
Sergey_rb

У меня сейчас вопрос выбора языка - Delphi или Java или, на крайний случай C#/С++.

Охренеть.

19 фев 21, 18:33    [22283694]     Ответить | Цитировать Сообщить модератору
 Re: Не работает try except на Андроиде 7.0  [new]
Sergey_rb
Member

Откуда:
Сообщений: 956
Для WinCe 6.0 писал на Лазаре, для WinCe 7.0 на Embedded C++.
На чем писать под Андроид - пока вопрос.
24 фев 21, 08:59    [22285463]     Ответить | Цитировать Сообщить модератору
 Re: Не работает try except на Андроиде 7.0  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 4987
Sergey_rb,

Для лазаря есть https://github.com/jmpessoa/lazandroidmodulewizard
24 фев 21, 10:14    [22285487]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / Delphi Ответить