• 0
Авторизация  
fsdb

переход на tokio

Вопросы

Добрый день. подскажите пожалуйста. Делаю приложение в firemonkey и раньше без проблем запускал приложение на Berlin, утсновкил Tokio и получаю сразу после компиляции. в приложении в основном использую StringGrid1, более ничего.

как мне отловить - в чем проблема именно? я вышел за Range, каким то образом и не могу понять как и где. пытаюсь отловить дебагером но до него дело не доходит. сразу после компиляции эта ошибка.

image.png.a0589a67ca9c5e4241311450805fb903.png

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

11 ответов на этот вопрос

  • 0
type
  all = record
    SettingStream: TObjectList<TControl>; // сам объект
    TypeName: TstringList;
    // тип объекта для создания (TButton, Timage и так далее)
    ActionList: TstringList; // закрепленные за объектом действия
    PropertList: TstringList; // дополнительные свойства объекта
  end;

Возможно как то связано с TObjectList<TControl>, исключение всплывает в System.Generics.Collections

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Ну не на голом же месте оно возникает. Может больше покажете? Странно, что не скрин ярлыка отправили

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes,
  System.Variants, Winapi.WinSock, Winapi.ShellAPI,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
  FMX.Controls.Presentation, FMX.StdCtrls, FMX.Media, FMX.Menus, FMX.ListBox,
  FMX.Objects, FMX.ExtCtrls,
  FMX.Layouts, FMX.Memo, Winapi.Windows, FMX.Platform, System.ImageList,
  FMX.ImgList, FMX.ListView.Types, FMX.ListView, FMX.Edit, FMX.Ani, registry,
  ShlObj, System.Generics.Collections, FMX.Presentation.Style,
  System.Rtti, FMX.Grid, Winapi.Tlhelp32, FMX.Grid.Style, FMX.ScrollBox,IdHTTP;

type
  all = record
    SettingStream: TObjectList<TControl>; // сам объект
    TypeName: TstringList;
    // тип объекта для создания (TButton, Timage и так далее)
    ActionList: TstringList; // закрепленные за объектом действия
    PropertList: TstringList; // дополнительные свойства объекта
  end;

type
  objChange = record
    Indx: integer; // индекс объекта относительно списка
    Prorep: string; // тип объекта для создания (TButton, Timage и так далее)
    Names: string; // имя компонента
  end;
..................
      
    procedure ControlClick(Sender: TObject);
    procedure ControlMouseMoveOnlyResize(Sender: TObject; Shift: TShiftState;
      X, Y: Single);

    procedure ControlMouseMoveNoResize(Sender: TObject; Shift: TShiftState;
      X, Y: Single);

    procedure ControlMouseMove(Sender: TObject; Shift: TShiftState;
      X, Y: Single);
    procedure ControlMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Single);
    procedure ControlMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Single);

    procedure MyDragDrop(Sender: TObject; const Data: TDragObject;
      const Point: TPointF);
    procedure MyDragOver(Sender: TObject; const Data: TDragObject;
      const Point: TPointF; var Operation: TDragOperation);
    procedure MyResize(Sender: TObject);
    ......................
      
      
procedure TForm1.ControlMouseMoveOnlyResize(Sender: TObject; Shift: TShiftState;
  X, Y: Single);
const
  minWidth = 20;
  minHeight = 20;
var
  newPos: TPoint;
  frmPoint: TPointF;

  h: integer;
begin

  Form1.ComponentLastView := TControl(Sender).ComponentIndex;
  // последний компонент над котором была мышь

  if inReposition then
  begin
    // if  ((Sender) is Tbutton) or ((Sender) is TLabel) or ((Sender) is TPanel) then     begin

    GetCursorPos(newPos);

    Form1.ChangeFormIndex := true;
    // были изменения в форме

    if ssShift in Shift then
    begin // resize

      TControl(Sender).Cursor := crSizeNWSE;

      if X > minWidth then
        (Sender as TControl).Width := X;
      if Y > minHeight then
        (Sender as TControl).Height := Y;

      // обводку даем
      if Form1.Profiles.SettingStream.Count > 0 then
      begin
        Form1.Rectangle1.Parent := TControl(Sender).Parent;
        Form1.Rectangle1.Position.X := TControl(Sender).Position.X - 3;
        Form1.Rectangle1.Position.Y := TControl(Sender).Position.Y - 3;
        Form1.Rectangle1.Width := TControl(Sender).Width + 6;
        Form1.Rectangle1.Height := TControl(Sender).Height + 6;

        // угол поворота для обводки
        if (Sender is TImage) then
        begin
          Form1.Rectangle1.RotationAngle := TImage(Sender).RotationAngle;
        end;
        if (Sender is TLabel) then
        begin
          Form1.Rectangle1.RotationAngle := TLabel(Sender).RotationAngle;
        end;
        if (Sender is TButton) then
        begin
          Form1.Rectangle1.RotationAngle := TButton(Sender).RotationAngle;
        end;
        if (Sender is TSwitch) then
        begin
          Form1.Rectangle1.RotationAngle := TSwitch(Sender).RotationAngle;
        end;
        if (Sender is TTrackBar) then
        begin
          Form1.Rectangle1.RotationAngle := TTrackBar(Sender).RotationAngle;
        end;
        if (Sender is TPanel) then
        begin
          Form1.Rectangle1.RotationAngle := TPanel(Sender).RotationAngle;
        end;
        // угол поворота для обводки

        Form1.Rectangle1.BringToFront;
        Form1.Rectangle1.BringToFront;
        Form1.Rectangle1.BringToFront;
        Form1.Rectangle1.BringToFront;

      end;
      // обводку даем

      ViewObjectInspector(TControl(Sender).ComponentIndex);

    end;

  end;
end; (* ControlMouseMoveOnlyResize *)

procedure TForm1.ControlMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Single);
begin



  if inReposition then
  begin


    TControl(Sender).Cursor := crDefault;

    (Sender as TControl).Root.Captured := nil;

    inReposition := false;

  end;
end;
..................................
      

 

 

честно сказать теряюсь какую часть выложить сюда и как отловить вообще где ухожу в ошибку.
задача изначально сделать приложение под windows и работать оно будет только в windows, но что бы было именно с использованием firemonkey.

 

image.thumb.png.eeba1867ececb45968e1bbf7397f79b5.png

 

 

Изменено пользователем Александр Лукьянов (Filament Extruder 1.75)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

дойди до ошибки. после нажми break и в стеке найди свою процедуру после которой пошло падение - профит

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Ну оно вообще запускается, или нет?

Есть что нибудь в oncreate, onshow? В каком месте свои листы инициализируете?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Начал удалять компоненты и объекты с формы. ошибка уходит если с права удалить компонент панель у которой нет ни одного события, но есть ссылки на нее подобного рода.

может быть какое то свойство исчезло или поменялось у компонента Panel

 

 

 

 

Изменено пользователем Александр Лукьянов (Filament Extruder 1.75)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
6 минут назад, Александр Лукьянов (Filament Extruder 1.75) сказал:

Начал удалять компоненты и объекты с формы. ошибка уходит если с права удалить компонент панель у которой нет ни одного события, но есть ссылки на нее подобного рода.

может быть какое то свойство исчезло или поменялось у компонента Panel


    Form1.Rectangle1.Parent := TControl(Sender).Parent;
    Form1.Rectangle1.Position.X := TControl(Sender).Position.X - 3;
    Form1.Rectangle1.Position.Y := TControl(Sender).Position.Y - 3;
    Form1.Rectangle1.Width := TControl(Sender).Width + 6;
    Form1.Rectangle1.Height := TControl(Sender).Height + 6;
  Form1.Rectangle1.BringToFront;
  Sender := Form1.Rectangle1.Parent;
  Form1.Rectangle1.Parent := nil;
  // убираем с контейнера
    Form1.Rectangle1.Parent :=
      TControl(Form1.Profiles.SettingStream.Items[num]).Parent;

 

 

 

 

А есть где нибудь до этого TObjectList<TControl>.Create?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

да, есть, но контрольная точка там не срабатывает. ошибка раньше возникает


procedure TForm1.FormCreate(Sender: TObject);
var
st:TstringList;
begin

  StringGrid1.OnDblClick := StringGrid1myDblClick;
  StringGrid2.OnDblClick := StringGrid2myDblClick;


  Form1.Profiles.SettingStream := TObjectList<TControl>.Create;
  Form1.Profiles.TypeName := TstringList.Create;
  Form1.Profiles.ActionList := TstringList.Create;
  Form1.Profiles.PropertList := TstringList.Create;

  Form1.EhomeSmartDir := GetEhomeSmartDir;
  // получаем директорию профилей
  // путь хранения C:\Users\Public\Documents\Fuzy for Windows

  Form1.SetupDir := System.SysUtils.ExtractFilePath(paramStr(0));
  // путь установки программы

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

кое как определил сбойный участок. спасибо ребята. правильным порядком оказалось удаление кода/компонентов -когда совсем не понятно что происходит.

код сначала выполняет тут (до create)

procedure TForm1.MyResize(Sender: TObject);
begin
 if TControl(Sender).Width < 120 then
    TControl(Sender).Width := 120;
  if TControl(Sender).Height < 120 then
    TControl(Sender).Height := 120;

  setWidhtHight(TControl(Sender).Width, TControl(Sender).Height);
end;

 

Изменено пользователем Александр Лукьянов (Filament Extruder 1.75)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

на сколько я понял у моей рабочей области (реальный компонент Panel4) установлено событие MyResize и оно вызывается раньше чем Form.create где прописано что объект нужно создать (сама ошибка возникала в setWidhtHight)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

Авторизация  

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

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