Поделитесь впечатлениями от FreePascal for WinCE ARM
Модератор: Модераторы
Ну ты загнул
Давай сделаем так. Ты качаешь последнюю версию Лазаря для ARM с http://snapshots.lazarus.shikami.org/lazarus/, проверяешь свой проект на нем. Если все равно вылазиют глюки, пробуешь воспроизвести все найденные тобой глюки в отдельной в программе, заливаешь в инет и даешь сдесь ссылку на ее исходный код. Будем разбираться. Так как таких глюков роде бы не замечал. Насчет окна без заголовка уже исправили, как говориться следите за обовлениями 
-
Medihlorian
- новенький
- Сообщения: 18
- Зарегистрирован: 26.02.2009 14:31:41
Залил тестовое приложение на: http://www.sharemania.ru/0222376
Там лежит скрин шот с эмулятора и скриншот ошибки которую генерит лазарус, в случае Access violation и исходники тестового приложения. Окно блин получается на большую часть экрана PDA, в Делфе это просто ошибка и приложение не вылетает после этой ошибки.
Не смог вооссоздать ситуацию когда приложение просто вылетает. Опишу ситуацию: попытка запуска -> мгновенные появление окна и закрытие приложения. После ЭНного количества попыток приложение запускается.
Также не получалось сэмулировать ситуацию когда приложение просто закрывается когда кликнешь куда ни буть. Я даже поставил MessageDlg на OnLoseQuery главной формы проекта. Возможно это связано с той мегоошибкой, которая выскакиевает в случае Access Violation и если код не завренут в Try Except, точнее после неё приложение в некоторый случаях закрывется. Возможно какая то ситуация повторяет часть кода этой ошибки.
Там лежит скрин шот с эмулятора и скриншот ошибки которую генерит лазарус, в случае Access violation и исходники тестового приложения. Окно блин получается на большую часть экрана PDA, в Делфе это просто ошибка и приложение не вылетает после этой ошибки.
Не смог вооссоздать ситуацию когда приложение просто вылетает. Опишу ситуацию: попытка запуска -> мгновенные появление окна и закрытие приложения. После ЭНного количества попыток приложение запускается.
Также не получалось сэмулировать ситуацию когда приложение просто закрывается когда кликнешь куда ни буть. Я даже поставил MessageDlg на OnLoseQuery главной формы проекта. Возможно это связано с той мегоошибкой, которая выскакиевает в случае Access Violation и если код не завренут в Try Except, точнее после неё приложение в некоторый случаях закрывется. Возможно какая то ситуация повторяет часть кода этой ошибки.
-
yantux
- постоялец
- Сообщения: 133
- Зарегистрирован: 29.10.2007 15:02:33
- Откуда: Санкт-Петербург
- Контактная информация:
Medihlorian писал(а):У меня впечатления больше негативные чем позитивные. Система очень не стабильная, и очень неудобная.
Кодить под KOL CE это извращение и полный геморой. И вообще не вижу смысла экономить полтора метра при современных технологиях, тем более что большинство приложений (задуманных мною) ориентировано на работу картинкаи и кнопками (хоть и бесплатные но страшные приложения никому не нужны).
LCL для WinCE очень не стабильна. То извиние, текст не виден, то он кразабрами, то сообщения где то на чукотке пояляются, то приложение после вызова сообщения вылетает, то оно просто вылетает потому что кликнул куда ни буть. Последнее меня добило: вызов обычно команды ShowMessage отображает сообщение на девайсе, но у него в заголовке и кнопка закрыть и кнопка ок а текст виден только на два строчки по три слова и там расположена ещё одна большая кнопка. Тоже самое с MessageDlg но если вызывать MessageBox то половина русского текста становится кракозябрами половина нормально и приложение вылетает!
В багзиллу добавляли????????
-
Medihlorian
- новенький
- Сообщения: 18
- Зарегистрирован: 26.02.2009 14:31:41
Понимаете, в баш треккее половина ошибок устранена, но у меня все не так. Я скачивал версию на 23 марта сего года.
Да и к тому же уважаемый haword говорит что устранено.
И ещё я на в офисе работаю с RAD Studio Delphi 2007 там мне очень нравится MDI интерфейс. Очень удобный он. Чего не скажешь про SDI. Думаю намек ясен?
Да и к тому же уважаемый haword говорит что устранено.
И ещё я на в офисе работаю с RAD Studio Delphi 2007 там мне очень нравится MDI интерфейс. Очень удобный он. Чего не скажешь про SDI. Думаю намек ясен?
-
yantux
- постоялец
- Сообщения: 133
- Зарегистрирован: 29.10.2007 15:02:33
- Откуда: Санкт-Петербург
- Контактная информация:
Medihlorian писал(а):Понимаете, в баш треккее половина ошибок устранена, но у меня все не так. Я скачивал версию на 23 марта сего года.
Да и к тому же уважаемый haword говорит что устранено.
И ещё я на в офисе работаю с RAD Studio Delphi 2007 там мне очень нравится MDI интерфейс. Очень удобный он. Чего не скажешь про SDI. Думаю намек ясен?
Нет, уж лучше прямо говорите !
Medihlorian На цвет вкус карандаши разные 
Я работаю на RAD2009 и он для меня бееее по сравнению с 7 Делфи. Неудобно из за MDI интерфейса.
Далее, насчет ваших ошибок.
1) Lazarus - кросплатформенный RAD IDE, поэтому в uses надо заменить Windows на LCLIntf, LCLType.
или
2) Или делать так -
MessageBox(Self.Handle, PWideChar(UTF8Decode('Это тестовое сообщение на русском языке'+ #13#10+'There is testing message')) , PWideChar(UTF8Decode('Сообщение')), MB_ICONINFORMATION);
Так как все переменные в Лазаре храняться в UTF8 кодировке и когда передаешь параметры напрямую в систему надо их
преобразовать в кодировку системы.
Окошки с ОК и Х , я тебе в другой теме уже давал ссылку http://wiki.lazarus.freepascal.org/Wind ... ment_Notes почитай там все написанно.
А насчет вылетов, как ты заметил версия WinCE - BETA. почаще код оборачивай в try except и смотри что выдает, в большенстве случаев это ошибки с открытиями файлов, после них программы пока вываливаются.
Я работаю на RAD2009 и он для меня бееее по сравнению с 7 Делфи. Неудобно из за MDI интерфейса.
Далее, насчет ваших ошибок.
1) Lazarus - кросплатформенный RAD IDE, поэтому в uses надо заменить Windows на LCLIntf, LCLType.
или
2) Или делать так -
MessageBox(Self.Handle, PWideChar(UTF8Decode('Это тестовое сообщение на русском языке'+ #13#10+'There is testing message')) , PWideChar(UTF8Decode('Сообщение')), MB_ICONINFORMATION);
Так как все переменные в Лазаре храняться в UTF8 кодировке и когда передаешь параметры напрямую в систему надо их
преобразовать в кодировку системы.
Окошки с ОК и Х , я тебе в другой теме уже давал ссылку http://wiki.lazarus.freepascal.org/Wind ... ment_Notes почитай там все написанно.
А насчет вылетов, как ты заметил версия WinCE - BETA. почаще код оборачивай в try except и смотри что выдает, в большенстве случаев это ошибки с открытиями файлов, после них программы пока вываливаются.
-
Medihlorian
- новенький
- Сообщения: 18
- Зарегистрирован: 26.02.2009 14:31:41
Всё верно я так и писал, что вываливается только если в try..except не завернута. Приложение просто закрывается, как будто отправляет винде команду на закрытие. Но неужеле нельзя просто выдать сообщения типа АФТОР У ТЕБЯ ГЛЮК.. и продолжить работу.
Я читал там, и не раз. На баг терккере кто то дает типа рабочий архивчик, но в нем ничего не устранено. А бошльшие тектсы ошибок улетают за пределы экрана, но это уже дело 10-тое.
А про MDI конечно на вкус и цвет товарища нет, но в CodeGear есть вариант переключения MDI/SDI так что если не нравится вам MDI переключитесь в другой режим, но вот на мой взгляд, MDI интерфейс в делфе 2009 удобен тем что там нет туево хучи окошек,которые пуются в большая часть времени уходит на растаскивание этих форточек, да и вообще полноценная развернутая среда способствует большей концетрировании разработчика на работе с проектом.
По крайней мере, пересев на 2007 ую делфю с 7ой я плевался, пока не привык. А вернувшись на 7ую(лазарус) я до сих пор удивляюсь как я раньше кодил... Кстате 2009 ую делфю я узаю около полумесяца, из минусов, малый набор сторонних компонентов, под работы с юникодом.
Я читал там, и не раз. На баг терккере кто то дает типа рабочий архивчик, но в нем ничего не устранено. А бошльшие тектсы ошибок улетают за пределы экрана, но это уже дело 10-тое.
А про MDI конечно на вкус и цвет товарища нет, но в CodeGear есть вариант переключения MDI/SDI так что если не нравится вам MDI переключитесь в другой режим, но вот на мой взгляд, MDI интерфейс в делфе 2009 удобен тем что там нет туево хучи окошек,которые пуются в большая часть времени уходит на растаскивание этих форточек, да и вообще полноценная развернутая среда способствует большей концетрировании разработчика на работе с проектом.
По крайней мере, пересев на 2007 ую делфю с 7ой я плевался, пока не привык. А вернувшись на 7ую(лазарус) я до сих пор удивляюсь как я раньше кодил... Кстате 2009 ую делфю я узаю около полумесяца, из минусов, малый набор сторонних компонентов, под работы с юникодом.
Всё верно я так и писал, что вываливается только если в try..except не завернута. Приложение просто закрывается, как будто отправляет винде команду на закрытие. Но неужеле нельзя просто выдать сообщения типа АФТОР У ТЕБЯ ГЛЮК.. и продолжить работу.
ну я щас в багтрекер запостил пач который убирает закрытие прогармы если произошла ошибка в OnCreate формы. Как внесут в svn обновись и посмотрим что далее.
Добавлено спустя 3 минуты 58 секунд:
Насчет 2007 и 2009 меня убивает расположение компонентов с права в столбик. С верху быстрее был к ним доступ чем с боку.
haword писал(а):Всё верно я так и писал, что вываливается только если в try..except не завернута. Приложение просто закрывается, как будто отправляет винде команду на закрытие. Но неужеле нельзя просто выдать сообщения типа АФТОР У ТЕБЯ ГЛЮК.. и продолжить работу.
ну я щас в багтрекер запостил пач который убирает закрытие прогармы если произошла ошибка в OnCreate формы. Как внесут в svn обновись и посмотрим что далее.
вообще идеология VCL (а значит и LCL) диктует, что в случае закрытия основного (первого созданного) окна закрывается всё приложение целиком!
в случае возникновения exception-a в событии OnCreate считается, что происходит ошибка при создании объекта формы (хотя объект уже давно создан). и её (форму) необходимо прибить! А раз основное окно формы уничтожено, то всё приложение должно быть закрыто.
Если уж пишите такие программы, в которых может возникнуть exception при событии FormCreate, то почему бы самостоятельно не позаботиться об этом?
вроде такого:
Код: Выделить всё
procedure TForm1.OnCreate(Sender: TObject);
begin
try
... здесь рисковый код...
exception
ShowMessage('АФТОР У ТЕБЯ ГЛЮК');
end;
end;
сий код НЕ нарушает идиологию LCL и даёт предупреждение об ошибке, если она есть!
-
Medihlorian
- новенький
- Сообщения: 18
- Зарегистрирован: 26.02.2009 14:31:41
Если уж пишите такие программы, в которых может возникнуть exception при событии FormCreate, то почему бы самостоятельно не позаботиться об этом?
Ткните пальцем в хоть одну программу более меннее не Hello World, в которой не может возникнуть Exception.
procedure TForm1.OnCreate(Sender: TObject);
begin
try
... здесь рисковый код...
exception
ShowMessage('АФТОР У ТЕБЯ ГЛЮК');
end;
end;
Если уже на то пошло то можно завернуть в Try Excep весь проект между Begin и end. Что обсуждалось в другой ветке форума, что не приводило ни к чему приложение просто закрывалось. Опять же Форма создаётся автоматом до старта приложения и если там глюк с созданием то приложение даже не запустится!
И не надо меня за ламера тут держать да? Если бы вы читали мои посты внимательней то поняли бы что я где то поисал о том что ставил MeesgaDlg на OnCloseQuery и если бы окно получало запрос на закрытие то я бы это точно увидел.
to Haword: Блягодарю, а вы не могли бы дать ссылку на сообщение в баг треккере. А по поводу Delphi 2007-2009 меня радует возможность выбора. Только и всего А вообще я был впечатлён внешним видо Лазаруса, когда поставил последний апдейт.
пач мой не приняли по идологическим соображениям
типа если произойдет ошибка при создании любой формы, правильное поведение программы - закрытся, и не беда что иногда она даже не сообщает об ошибке и не закроет предыдущие откртытые формы, ибо сам дурак что не наставил везде try except 
-
Medihlorian
- новенький
- Сообщения: 18
- Зарегистрирован: 26.02.2009 14:31:41
Мдя, стою на асфальте я в лыжи обутый либо лыжи не едут либо разработчкик....
Если уже на то пошло то правильное поведение программы сообщить что не так а потом спросить закрыться или нет. А разработчик если он делает не для личного пользования должен понимать, что такое поведение программы (просто тупо закрылась а чё там. да х... знает.) только раздражает. Программист должен иметь возможность понять что не так. Хотябы узнать что с софтиной что то не так. Я столько времени убил, думая что либо ось у меня слетела с катушек, либо я что то не так сделал. И вообще если произошла ошибка при создании формы, не имеющей кода в обработчиках типа onCreate, то косяк автора сего IDE.
Вы не могли бы прислать мне патч и в кратце рассказать что надо сделать. Буду признателен, или хотябы подсказать куда рыть то надо.
(P.S.: Есть среда такая Palles C не удобная жутко тем что это Cи, а в остальном сказка быстрейшая, визуальная, MDI удобный интерфейс, поддержка иконок и картинок до png 32 + Alpha и т. д. и т. п. а самое главное приложения получаются 18 кб. Но мне нравится паскаль!! И мне бы хотелось что бы автор был не простите бараном упертым в землю, так как я уверен он не в силах сам полностью с разных сторон оценить качество его продукта).
Мне задают часто вопрос почему если Free ПО такое хорошее и бесплатное то люди всё равно покупают, Да потому что платное делают под хотелки пользователей, и пользователям удобно с ним работать, а бесплатное делается многими для автора, и всё тут а в замен автор говорит еб...есь как хотите.
Если уже на то пошло то правильное поведение программы сообщить что не так а потом спросить закрыться или нет. А разработчик если он делает не для личного пользования должен понимать, что такое поведение программы (просто тупо закрылась а чё там. да х... знает.) только раздражает. Программист должен иметь возможность понять что не так. Хотябы узнать что с софтиной что то не так. Я столько времени убил, думая что либо ось у меня слетела с катушек, либо я что то не так сделал. И вообще если произошла ошибка при создании формы, не имеющей кода в обработчиках типа onCreate, то косяк автора сего IDE.
Вы не могли бы прислать мне патч и в кратце рассказать что надо сделать. Буду признателен, или хотябы подсказать куда рыть то надо.
(P.S.: Есть среда такая Palles C не удобная жутко тем что это Cи, а в остальном сказка быстрейшая, визуальная, MDI удобный интерфейс, поддержка иконок и картинок до png 32 + Alpha и т. д. и т. п. а самое главное приложения получаются 18 кб. Но мне нравится паскаль!! И мне бы хотелось что бы автор был не простите бараном упертым в землю, так как я уверен он не в силах сам полностью с разных сторон оценить качество его продукта).
Мне задают часто вопрос почему если Free ПО такое хорошее и бесплатное то люди всё равно покупают, Да потому что платное делают под хотелки пользователей, и пользователям удобно с ним работать, а бесплатное делается многими для автора, и всё тут а в замен автор говорит еб...есь как хотите.
погоди я видать на эмоциях поспешил с выводом. посмотрим возможно и добавят сегодня в svn. а куда копать так это проще некуда, в lcl/include/customform.inc есть вызов DoCreate, где if Assigned(FOnCreate) then FOnCreate(Self); в делфи такой же вызов по умолчанию обернут Try Except для того чтобы форма всетаки показалась, а в лазаре такого нету.
-
Medihlorian
- новенький
- Сообщения: 18
- Зарегистрирован: 26.02.2009 14:31:41
Не помогло
Завернул в try .. excpt.
а толку нет.
Код: Выделить всё
{------------------------------------------------------------------------------
Method: TCustomForm.DoCreate
Params: none
Returns: nothing
Calls user handler
------------------------------------------------------------------------------}
procedure TCustomForm.DoCreate;
begin
LockRealizeBounds;
if Assigned(FOnCreate) then
try
FOnCreate(Self);
except
MessageBox(0, 'Ошибка приложения', 'Ошибка выполнения приложения', MB_ICONERROR);
end;
FFormHandlers[fhtCreate].CallNotifyEvents(Self);
UnlockRealizeBounds;
end; а толку нет.
прога вываливается всеравно при запуске? а ты точно пересобрал исходники lcl заново все? Просто компиляцией проекта тут не обойтись. Открой ЕХЕ и поищи в нем свою строчку "Ошибка выполнения приложения".
