Lazarus 1.6, обсудим изменения...
Модератор: Модераторы
Значит проблема в дллной организации программы.
Я бы попробовал выкинув LazControl посмотреть будет ли Themes в зависимостях проблемного плагина? если нет, то явно в uses плагина указать Themes проблема возникнет снова? Поотлаживать - конкретезировать место и причину проблемы, может можно будет обойти небольшим патчиком.
В транк компилятора слили ветку с поддержкой пакетов. Я не пробовал, но может уже можно пробовать делать по правильному, на пакетах?
Я бы попробовал выкинув LazControl посмотреть будет ли Themes в зависимостях проблемного плагина? если нет, то явно в uses плагина указать Themes проблема возникнет снова? Поотлаживать - конкретезировать место и причину проблемы, может можно будет обойти небольшим патчиком.
В транк компилятора слили ветку с поддержкой пакетов. Я не пробовал, но может уже можно пробовать делать по правильному, на пакетах?
Приходит сын к отцу-программисту:
– Папа, а почему солнце всходит?
– Ты проверял?
– Да…
– Каждый день всходит?
– Да, и каждый день заходит…
– НИЧЕГО НЕ ТРОГАЙ!
Соднце уже 1 раз не взошло какбы))
zub писал(а):Соднце уже 1 раз не взошло какбы))
Переделки даже в промышленных масштабах мало рентабельны, а в домашних программах тем более.
Наконец-то решился попробовать перебраться с 1.4.4 на 1.6.
Проект к моей радости скомпилился после о-о-очень небольших правок.
Но счастье мое было недолгим. Сначала отказалась открывать одна из форм в самом Lazarus. После правки напильником она открылась, но вот в run-time попытка ее показать валит приложение с сообщением:
При том, что та же форма скомпиленная на версии 1.4.4 ведет себя абсолютно адекватно.
По сообщению так понимаю, что где-то цикл привязок, пробовал их совсем по отключать - эффекта н0ль.
Может подскажите, ЧЯДНТ?
Странное дело. Начал было уже ваять другую форму с н0ля с целью перенести на нее функционал, а старую удалить. И тут оно внезапно просто заработало само собой. Чудеса...
Проект к моей радости скомпилился после о-о-очень небольших правок.
Но счастье мое было недолгим. Сначала отказалась открывать одна из форм в самом Lazarus. После правки напильником она открылась, но вот в run-time попытка ее показать валит приложение с сообщением:
TControl.InvalidatePreferredSize loop detected TabSheet1:TTabSheet Bounds=l=0,t=0,r=392,b=593
При том, что та же форма скомпиленная на версии 1.4.4 ведет себя абсолютно адекватно.
По сообщению так понимаю, что где-то цикл привязок, пробовал их совсем по отключать - эффекта н0ль.
Может подскажите, ЧЯДНТ?
Странное дело. Начал было уже ваять другую форму с н0ля с целью перенести на нее функционал, а старую удалить. И тут оно внезапно просто заработало само собой. Чудеса...
У вас нет необходимых прав для просмотра вложений в этом сообщении.
"loop detected" происходил в run-time или в disign-time?
Я поставил на Lazarus плагин anchordockingdsgn и инногда "loop detected" вываливается и Lazarus падает - приходится файл *.lps удалять или уменьшить размер окна Lazarus и потом с "прилепленными" окнами шаманить.
(но тут претензий к Lazarus нет - плагин anchordockingdsgn и раньше был нестабильным)
Я поставил на Lazarus плагин anchordockingdsgn и инногда "loop detected" вываливается и Lazarus падает - приходится файл *.lps удалять или уменьшить размер окна Lazarus и потом с "прилепленными" окнами шаманить.
(но тут претензий к Lazarus нет - плагин anchordockingdsgn и раньше был нестабильным)
Я оного (anchordockingdsgn) не ставил в этот раз. Ваще грешу на VirtualBox на самом деле, так как третью версию пробую именно там. Ибо глюк ваще странно поддается ловле.
Был сначала и в disign-time. Но это вылечилось. Теперь падает в ран-тайм только, НО... тут самое странное. Падает иногда, но периодами. То есть, если начало падать при отображении формы, то падает (на 1 и той же форме всегда). А потом через несколько часов, та же форма открывается спокойно, как ни в чем не бывало. Когда первый раз она вдруг снова начала нормально открываться, я обрадовался и дописал предыдущий пост. Но через несколько часов сменилась фаза луны и глюк вернулся. Через несколько часов пропал снова. Интереснее всего тот факт, что я пар этом с самой проблемной формой давно уже ничего не делаю, а она все продолжает работать периодами.
heX писал(а):"loop detected" происходил в run-time или в disign-time?
Был сначала и в disign-time. Но это вылечилось. Теперь падает в ран-тайм только, НО... тут самое странное. Падает иногда, но периодами. То есть, если начало падать при отображении формы, то падает (на 1 и той же форме всегда). А потом через несколько часов, та же форма открывается спокойно, как ни в чем не бывало. Когда первый раз она вдруг снова начала нормально открываться, я обрадовался и дописал предыдущий пост. Но через несколько часов сменилась фаза луны и глюк вернулся. Через несколько часов пропал снова. Интереснее всего тот факт, что я пар этом с самой проблемной формой давно уже ничего не делаю, а она все продолжает работать периодами.
kotompazb писал(а):Ваще грешу на VirtualBox... Падает иногда, но периодами.
VirtualBox тут вообще никак не должен влиять.
Я изначально подумал про неудачную комбинацию сохраняемых свойств (TPropStorage) и Align - но твоей форме ничего такого нету. Действительно странно...
heX писал(а):TPropStorage
не использую.
Align - да.
Я в итоге создал новую форму и перетаскиваю функционал на нее. Не нравятся мне глюки, которые я не могу отловить.
Добавлено спустя 10 часов 42 минуты 40 секунд:
Utf8ToSys теперь ничего не перекодирует, я правильно понял? То есть кодировка хранится в самой строке, и (неявная) перекодировка происходит при присваивании.
А как все-таки перекодировать строку. Если есть текст в UTF8, а мне надо его в 1251?
[quote="kotompazb"]Если есть текст в UTF8, а мне надо его в 1251?
Если без хаков, то примерно так:
Если без хаков, то примерно так:
Код: Выделить всё
Type mycp1251string=AnsiString(1251);
Var s:mycp1251string;
....
s:=....
SSerge писал(а):Если без хаков, то примерно
Спасибо. Попробуем.
SetCodePage(rawByteString(s),1251,true)kotompazb писал(а):А как все-таки перекодировать строку. Если есть текст в UTF8, а мне надо его в 1251?
Сделал так:
вместо
Работает. Может можно упростить?
Код: Выделить всё
for i:=0 to Memo1.Lines.Count-1 do begin
EncoderStr:=Memo1.Lines[i];
SetCodePage(RawByteString(EncoderStr),1251,true);
Text4Save.Add(EncoderStr);
end;
вместо
Код: Выделить всё
for i:=0 to Memo1.Lines.Count-1 do Text4Save.Add(Utf8ToSys(Memo1.Lines[i]))Работает. Может можно упростить?
kotompazb писал(а):Может можно упростить?
Код: Выделить всё
encoderStr:=Memo1.text;
SetCodePage(rawByteString(encoderStr),1251,true);
Text4Save.text:=encoderStr;
