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

"Column index 1 out of bound" но не все так просто как может показаться...Нужна помощь или совет...


Roma77751

Вопрос

Доброго времени суток друзья! Выручайте пишу на форум исключительно в случае крайней необходимости, когда свои силы и энтузиазм на исходе. В общем постараюсь вкратце объяснить суть проблемы. Для начала,  имеется

-студия версии 10.3(Rio)

-Виртуальный мак на Mojave 10.14.4   с   XCode 10.1

-Iphone 5S  IOs 12.2

-Проект написанный для ios,android. Под андроидом проблем нет. Под Ios  сначала собирал на Эль капитане со студией 10.2.3, проблем на устройстве с программой не помню,(кажется не было). Под симулятором сейчас проверяю на капитане со студией 10.2.3 все отлично! НО столкнулся с тем что Эпл требует свежий СДК, а это тянет за собой свежий Xcode тот за собой свежую ОС, а студию 10.2.3 я не смог довести до ума(там проблемы с Pa сервером) чтобы она работала корректно с Mojave, патчил-не помогло. Так я пришел к тому что сейчас имею.  если кликнуть на Листвьюитем увидим мозговыносящую ошибку "Column index 1 out of bound". Причем может появиться после 1, 2 или 3 таких манипуляций. Напомню что проект с этим кодом собранный под симулятор на Элькапитане со студией 10.2.3 и под андроид работает отлично! Подскажите ребят или совет дайте....

 

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

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

  • 0

Поставил Xcode 10.2 SDK 12.2 подумал может в этом дело. Эффекта нет. Тоже самое. Ребят очень нужна помощь... Кстати с SDK 12.2 заработал дебаггер, вот ошибка 

First chance exception at $0000000101C00400. Exception class EArgumentOutOfRangeException with message 'Column index, 1, out of bounds'. Process Project1 (272) 

---Ошибку ловит при клике на листвьюитем. Причем ставил showmessage после begin. вылетает сначала ошибка, потом шоумессадж. 

---При первом клике стринггрид отображается корректно. При последующих возникают 2 лишних столбца  по названию дублирующих последний столбец(без данных-только header). При этом sg1.columncount пишет 6. то есть эти столбцы в расчет не берет.После выполнения листвьюитемклик в конце процедуры sg1.columncount пишет равно 0...(я ставил шоумессаджи) но не всегда, то 6 то 0... когда 6 ошибки не наблюдал, когда 0 через раз ошибка, но может и связи нет.... может это просто рандом. 

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

есть еще некоторые процедуры с участием fdquery2 и стринггрид. но они не активны при этих манипуляциях. или может быть косяк там а отражаться тут? я уже даже не знаю... написал, на ведроид залетело со свистом...все работает... с айфоном вечный геморрой...

Ссылка на комментарий
  • 0
59 минут назад, OnePeople сказал:

 

А почему 


TListViewItem(ListView1.Selected).Text

а не


AItem.Text

да так буде попроще) но проблемы это не решает....блин все уже перепробовал... 

Ссылка на комментарий
  • 0
1 час назад, OnePeople сказал:

Я так думаю проблема тут в 


visual bind

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

SG1.Visible:=true; //вынес на первое место, так как нормальные идеи уже кончились..
//Однако теперь при ошибке грид появляется и появляется пустой... 
//нажимаем назад, открываем опять отрабатывает код ниже(грид отображает все верно) 
//правда ловит исключение которое я для проверки написал (try openorexecute...)
//далее при возврате назад и открытии листвьюитем вновь все циклично повторяется...
button1.Visible:=true;
image18.Visible:=false;
callback.stop;
colom:='';
colom:=TListViewItem(ListView1.Selected).Text;

fdquery1.sql.Clear;
fdquery1.sql.Add('SELECT "Наименование","Цена","Количество","Сумма","Фото","id" FROM "'+colom+'" where "Наличие"<>"0" ORDER BY "Наименование"');


 try
fdquery1.openorexecute;

 Except
 on e:exception do showmessage('1');// это исключение срабатывает при ПОВТОРНОМ открытии листитем, однако грид отображает все верно.
 end;

datasource1.DataSet.Open;
datasource1.DataSet.First;// нахрена я это сюда добавил?Разумительного ответа дать не могу.
//Но вот только после этих строк приложение, при возникновении ошибки смогло(и может) со второго раза отобразить корректно грид
// только в нем отображался последний неочищенный sql запрос выполненный дважды... 
//поэтому я вынес sql.clear и sql.add вне цикла try. Теперь ошибка ловится,
//но повторно если нажать на листитем приложение продолжает работу.    

Просто если он появляется то он вызывает ошибку при КАЖДОМ нажатии на листитем... 

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

sql запрос по сути не совсем корректно отображается в гриде после первого раза... я же писал, колонка дублируется последняя...без данных только хидер.... если оставить код без этого :

sg1.Columns[1].Header:='Цена (тг)';
sg1.Columns[2].Header:='Кол-во (шт)';
   sg1.Columns[3].Visible:=false;
    sg1.Columns[4].Visible:=false;
    sg1.Columns[5].Visible:=false;          
эти колонки не нужно отображать, это (фото,сумма и ID)

то отобразится все как надо... (ошибка естественно от этого не исчезает)... 

так вот, при повторном клике на листитем, создается 2 или 3 колонки пустые с header "ID"....если в запросе поставить последнюю "Сумму" то так будет несколько колонок с суммами... При этом грид при команде Showmessage(inttostr(sg1.columnCount)); говорит что у него колонок всего 6.... остальные призраки получается.... не знаю имеет ли это отношение к ошибке, но на андроиде такого нет...

Сейчас посмотрел количество этих колонок(призраков) совпадает с количеством скрытых....может это они и есть, но почему их обозвали одинаково непонятно...

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

Думаю, что если в Андроид, WIN проблем нет, то, скорее всего глюк в реализации под IOS, чего нибудь

Нужно попытаться обойти, например, убрать динамическое создание полей  SG1, из текста не понятно, что к чему привязано.. я в таких случаях делаю пустую форму, с необходимым минимальным "падающим" функционалом, и уже на ней тестирую варианты..

и этот проект уже можно выложить целиком, если кого то попросить потестировать, посмотреть. Правда непонятно что делать с базой, приложить дампы ( усеченные) необходимых таблиц.

Ссылка на комментарий
  • 0
19 минут назад, Сергей Сергеев сказал:

Думаю, что если в Андроид, WIN проблем нет, то, скорее всего глюк в реализации под IOS, чего нибудь

Нужно попытаться обойти, например, убрать динамическое создание полей  SG1, из текста не понятно, что к чему привязано.. я в таких случаях делаю пустую форму, с необходимым минимальным "падающим" функционалом, и уже на ней тестирую варианты..

и этот проект уже можно выложить целиком, если кого то попросить потестировать, посмотреть. Правда непонятно что делать с базой, приложить дампы ( усеченные) необходимых таблиц.

Stringgrid(SG1) привязан к FDQuery1 посредством bind visually(LiveBindings Designer) собственно приявязок там никаких нет. Про чистый проект думал, но я по сути перебрал все свои варианты решения на этом проекте, да и сил уже нет....последнее что попробую если никто не поможет это собрать проект на Элькапитане со студией 10.2.3 и убедиться что там косяков нет... Но и тут проблемы, из-за частых смен МакОс эпл как то с трудом стала выдавать мне сертификат на макос...чет страшновато новый запрашивать... 100$ жалко будет))) лиц соглашение я конечно не читал, вдруг так нельзя делать....  Перебирая макосы я создавал серты под каждый, в один момент эпл говорит, что у меня максимум сертов... ну я  один удалил, другой добавил и проблем не было... тут первое что я решил сделать когда увидел эту ошибку запустить на капитане,(серт я снес так как максимум было), я зашел делать новый, мне говорит максимум, я один снес, не помогло, и тут я вспотел....ну и трогать не стал...так все и оставил...Если решения не найду рискну и снесу действующий, вариантов больше не вижу

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

В общем поставил все назад Эль капитана со студией 10.2.3, Скомпилировал тот же проект проблемы не увидел. У кого есть совет что мне теперь делать????

походу больше недели убил на борьбу с ветряными мельницам?

Изменено пользователем Roma77751
Ссылка на комментарий
  • 0
3 минуты назад, #WAMACO сказал:

Попробуйте отказаться от LiveBindings ...

не хотелось бы... есть другие предложения? кто пишет под Иос, какую студию юзаете?  если 10.2.3 то как сдружили со свежим СДК

Ссылка на комментарий
  • 0
1 час назад, Tumaso сказал:

Отказ от  LiveBindings  это наилучшее решение

Почему не отказ от "сырой" студии? по моему это решение лучше, нет? я поэтому и спросил кто на какой студии пишет...но в ответ тишина

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

Пишем в данный момент на 10.3.1, в т.ч. под iOS.
Перед этим писали на всех версиях начиная с Берлина.
Live bindings не используем, т.к. наслышаны про его странное поведение.
Да, больше писанины, но и уверенности что все работает именно так как нужно - тоже больше.

Да, вы можете отказаться от "сырой" студии, без проблем, никто не запрещает.
Но есть шанс что вы путаете теплое с мягким - студию в целом с одним глючным решением.

Изменено пользователем Barbanel
Ссылка на комментарий
  • 0
4 минуты назад, Barbanel сказал:

ничуть не защищаю студию, просто констатирую.

По факту получается 10.2.3 проект работает,на 10.3  глючит. LiveBindings или нет, это еще тоже вопрос... конечно подозрения в первую очередь падает на него...но вполне возможно что причина и не в этом...Тратить время на выяснение в чем же действительно дело уже времени и желания особо нет.

Кто нибудь пишет на 10.2.3 под Ios??? Подскажите как адаптировали студию под свежий СДК, я так понимаю нужно прикрутить свежий paserver? 

Ссылка на комментарий
  • 0
51 минуту назад, Barbanel сказал:

Пишем в данный момент на 10.3.1, в т.ч. под iOS.

Кстати не подскажешь почему у меня сплэш в ланшафтном режиме стал отображаться?.  В настройках проекта стоит только портрет, и в 10.2.3 портретный сплэш был... а в 10.3 правда я догрузил иконки(их там добавилось ну и сплэши тоже добавили других размеров) почему то на бок решил лечь

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

Не сталкивался.
Решение в лоб: забекапь .dproj и .deployproj и удали их, это обнулит настройки проекта.
После этого зайди в настройки проекта и настрой все заново.

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

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

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

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

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

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

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

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

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

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

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