Когда выйдет Lazarus 9.26?
Модератор: Модераторы
-
sobee
- новенький
- Сообщения: 84
- Зарегистрирован: 04.02.2008 23:23:46
- Откуда: Снежинск, Челябинская обл.
Уважаемые вы о чем спорите? У меня упал проект, после замены в Лазаре FPC c 2.2.0 на 2.2.2, где был использован календарь из RxFPC. В проекте, где использован календарь из стандартной поставки ни каких проблем с кодировкой нет.
v-t-l писал(а):Вообще-то, по уму надо было бы сделать в fpc, как в последней делфе - все string по умолчанию равны widestring (UTF-16), удобнее было бы.
Или добавить опцию компилятора для такого режима.
100%
Опцию и только опцию. Дело в том, что есть приложения, где UTF не нужен.
Добавлено спустя 16 минут 11 секунд:
Attid писал(а):жалусь гтк2 линуксКод: Выделить всё
InputQuery('caption','promt',vstr);
в аттаче
дебург и showmessage так и не работает =( прошу подтвердить или опровергнуть, тогда я себе систему переустановлю.
а вот проблема с модальностью
.......
Я проверил на fpc 2.3.1 и Lazarus 9.25beta с SVN 28.08.08
В GTK2 не вижу проблем с InputQuery('caption','promt',vstr);
Дебагер - работает;
showmessage - работает;
Пример с модальностью - работает;(закоментировал строку Caption:=IntToStr(StrToInt(Self.Caption)+1);)
--------------------------------------
Значения переменных в дебагере отображаются не всегда хорошо, кирилица в кодах, значения некоторых переменных вообще не отображает...., но работать можно, помогает.
- Attid
- долгожитель
- Сообщения: 2589
- Зарегистрирован: 27.10.2006 17:29:15
- Откуда: 44°32′23.63″N 41°2′25.2″E
- Контактная информация:
мне про модальность вот что ответили .
вот теперь не пойму сам я дурак или как =/ и почему если гтк так не может, то все остальное что не гтк работает нормально.
Logo
покажи версию ядра\иксов\гтк\и gdb плиз.
showmessage если вручную запустить в дебаге показывает вот что :
а программа висит.
The gtk intf only supports at the moment:
- multiple non modal forms any z-order
- multiple non modal forms plus modal forms on top of the non modal forms, z-order of modal forms can not be changed once they are shown
the gtk_window_set_transient_for allows to define that one form must be in front of another. Without it, the modal windows would be no longer modal.
вот теперь не пойму сам я дурак или как =/ и почему если гтк так не может, то все остальное что не гтк работает нормально.
Logo
покажи версию ядра\иксов\гтк\и gdb плиз.
showmessage если вручную запустить в дебаге показывает вот что :
Код: Выделить всё
Starting program: /tmp/project1
[Thread debugging using libthread_db enabled]
[New Thread -1218242896 (LWP 9663)]
Program received signal SIGFPE, Arithmetic exception.
[Switching to Thread -1218242896 (LWP 9663)]
0xb779666c in cairo_debug_reset_static_data () from /usr/lib/libcairo.so.2
(gdb) n
Single stepping until exit from function cairo_debug_reset_static_data,
which has no line number information.
0x08073240 in SYSTEM_SIGNALTORUNERROR$LONGINT$PSIGINFO$PUCONTEXT ()
(gdb) n
Single stepping until exit from function SYSTEM_SIGNALTORUNERROR$LONGINT$PSIGINFO$PUCONTEXT,
which has no line number information.
0x0805c910 in SYSTEM_LINUX_RESTORE_RT ()
(gdb) n
Single stepping until exit from function SYSTEM_LINUX_RESTORE_RT,
which has no line number information.
0x0806c6d0 in SYSTEM_HANDLEERRORADDRFRAME$LONGINT$POINTER$POINTER ()
(gdb) n
Single stepping until exit from function SYSTEM_HANDLEERRORADDRFRAME$LONGINT$POINTER$POINTER,
which has no line number information.
0x080b0c80 in SYSUTILS_RUNERRORTOEXCEPT$LONGINT$POINTER$POINTER ()
(gdb) n
Single stepping until exit from function SYSUTILS_RUNERRORTOEXCEPT$LONGINT$POINTER$POINTER,
which has no line number information.
TApplication.HandleException Invalid floating point operation
Stack trace:
$B779666C
$B77A6FED
$B779D474
$B7797C43
$B7792D82
$B3AE60AE
$B3AE0FFE
$B3AD6ADB
$B3AD964E
$B3AD98AA
$B3AD964E
$B3AD98AA
$B3AD964E
$B3AD98AA
$B3AD964E
$B3ADA0FF
$B3AD964E
Program received signal SIGFPE, Arithmetic exception.
0xb3ac1f7d in ?? () from /usr/lib/librsvg-2.so.2
а программа висит.
-
Padre_Mortius
- энтузиаст
- Сообщения: 1265
- Зарегистрирован: 29.05.2007 17:38:07
- Откуда: Спб
ShowMessage под GTK2 работает нормально.
С модальностью на нескольких окнах все хорошо (2 окна, больше пока не использовал)
А вот с TEdit проблема похоже не только у меня)
P.S. Прыгаюшее окно с компонентами это прикольно)
Добавлено спустя 1 минуту 47 секунд:
P.P.S. Проверялось под AspLinux 12
С модальностью на нескольких окнах все хорошо (2 окна, больше пока не использовал)
А вот с TEdit проблема похоже не только у меня)
P.S. Прыгаюшее окно с компонентами это прикольно)
Добавлено спустя 1 минуту 47 секунд:
P.P.S. Проверялось под AspLinux 12
- Attid
- долгожитель
- Сообщения: 2589
- Зарегистрирован: 27.10.2006 17:29:15
- Откуда: 44°32′23.63″N 41°2′25.2″E
- Контактная информация:
Padre_Mortius писал(а):(2 окна, больше пока не использовал)
дык у меня до 5 модальных окон может быть. баг видно начиная с 3 окошка.
да и в том же лазаре у меня окна прыгают.
-
Павел Ишенин
- постоялец
- Сообщения: 475
- Зарегистрирован: 24.03.2007 09:16:52
Ничего не полнял из обсуждения, но если вы сможете выразить на английском в чем суть проблемы и написать об этом в баг-трекер, то она (проблема) однозначно будет решаться.
Attid писал(а):Logo
покажи версию ядра\иксов\гтк\и gdb плиз.
Проверял на Mandriva 2008.1 x86_64
GNU gdb 6.6-5mdv2008.1
2.6.24.7-desktop-1mnb
xorg 7.2, KDE 3.5.9
GTK 2.10
Lazarus и fpc с SVN за 28.08.2008
Открыл 50 модальных окон, - без проблем. Ctrl-F2 закрыло все без ошибок. 10 открытых форм, последовательно закрылись без проблем.
Открывалка:
Код: Выделить всё
procedure TForm1.Button1Click(Sender: TObject);
var vstr: string;
begin
with TForm1.Create(Self) do
try
// Caption:=IntToStr(StrToInt(Self.Caption)+1);
Button1.Caption:= Caption;
Left:= Self.Left + 50;
Top:= Self.Top + 50;
ShowModal;
finally
free;
end;
end;
Если нужно, то могу к утру 30.08.08 проверить на Убунте x86_64 и Debian i386.
Добавлено спустя 8 минут 10 секунд:
Padre_Mortius писал(а):...
А вот с TEdit проблема похоже не только у меня)
А вчем проявляется проблема TEdit?
Добавлено спустя 3 минуты 19 секунд:
Павел Ишенин писал(а):Ничего не полнял из обсуждения, но если вы сможете выразить на английском в чем суть проблемы и написать об этом в баг-трекер, то она (проблема) однозначно будет решаться.
Так вот и разбираемся, в чем проблема, в окружении или в fpc/Lazarus
-
Padre_Mortius
- энтузиаст
- Сообщения: 1265
- Зарегистрирован: 29.05.2007 17:38:07
- Откуда: Спб
Logo писал(а):А вчем проявляется проблема TEdit?
Не попадают данные в TEDit. Если получится создать testcase, то выложу в багрепорт
А пляшущее окно можно посмотреть. если сделать полноэкранный размер основного окна Lazarus. Хотя это проблема обновления закладок инструментов
-
Padre_Mortius
- энтузиаст
- Сообщения: 1265
- Зарегистрирован: 29.05.2007 17:38:07
- Откуда: Спб
Padre_Mortius писал(а):Не попадают данные в TEDit. Если получится создать testcase, то выложу в багрепорт
C этим вопросом все ок. Разобрался. Перемудрил малость.
- Attid
- долгожитель
- Сообщения: 2589
- Зарегистрирован: 27.10.2006 17:29:15
- Откуда: 44°32′23.63″N 41°2′25.2″E
- Контактная информация:
чет с этим ютф больше непоняток чем полезностей =)
во первых не понимаю как взять символ из строки
s: string
showmessage(s[0]);
работает только с латиницей.
ну и как сделать его uppercase тоже не пойму. =(
Добавлено спустя 2 часа 59 минут 21 секунду:
ой а как красиво выглядит таблица символов =) на нее кто нибуть заглядывал ? =) а то в 9,25 оно выглядит весело =)
пойду в мантис посмотрю может кто жаловался
во первых не понимаю как взять символ из строки
s: string
showmessage(s[0]);
работает только с латиницей.
ну и как сделать его uppercase тоже не пойму. =(
Добавлено спустя 2 часа 59 минут 21 секунду:
ой а как красиво выглядит таблица символов =) на нее кто нибуть заглядывал ? =) а то в 9,25 оно выглядит весело =)
пойду в мантис посмотрю может кто жаловался
Немного примеров и коментарии к ним. Может поможет разобраться. Вся проблема в том, что WideString занимает 2 байта для символа и это нужно учитывать. Если строка явно указа, как Wide, то все функции знают, как с ней поступать. Многие компоненты еще не работают правильно с WideString, тоесть с кирилицей 
Код: Выделить всё
procedure TForm1.Button1Click(Sender: TObject);
var s0, s1 : string;
sw0, sw1: WideString;
begin
s0 := 'чет с этим ютф больше непоняток чем полезностей =) ';
Label1.Caption := s0[12];//получаем неверный результат, так как один символ занимает 2 байта
Label2.Caption := WideString(s0)[12];//приводим AnsiString к WideString, - результат верный
sw0 := s0; //присваеваем значение String строке WideString
s1 := sw0[12]; //берем 12-й символ и символ снова присваиваем переменной String
Label3.Caption := s1; //Результат верный
Label4.Caption := Copy(s0, Length(s0)-14, 14);
//Получаем строку в ~два раза меньше с испорченым первым символом
Label5.Caption := Copy(WideString(s0), Length(WideString(s0))-14, 14);
//теперь Copy знает, что строка двухбайтовая и результат верный
showmessage('String приведенная к WideString: '
+ WideString(s0)[1] +' - ' + Copy(WideString(s0), Length(WideString(s0))-14, 14)
+ #0013 + 'А это WideString: ' + sw0[1] + ' - ' + Copy(sw0, Length(sw0)-14, 14));
//Вроде правильно, но мы получаем "кашу", - функция преобразования не могла разобраться в смешаных строках
//Попробуем присвоить строку в WideString и вывести ее
sw1 := 'String приведенная к WideString: '
+ WideString(s0)[1] +' - ' + Copy(WideString(s0), Length(WideString(s0))-14, 14)
+ #0013 + 'А это WideString: ' + sw0[1] + ' - ' + Copy(sw0, Length(sw0)-14, 14);
showmessage(sw1);//результат тот же
//Смешаную строку сначала присваиваем в AnsiString. ТОЛЬКО ТАК.
//Это конечно тупо выглядит, но ничего не поделаешь, присваивать придется последовательно.
// Может это немного и можно оптимизировать, я просто быстро набросал принцип
s1 := 'String приведенная к WideString: ';
s1 := s1 + WideString(s0)[1] +' - ' + Copy(WideString(s0), Length(WideString(s0))-14, 14);
s1 := s1 + #13;
s1 := s1 + 'А это WideString: ';
s1 := s1 + sw0[1] + ' - ' + Copy(sw0, Length(sw0)-14, 14);
showmessage(s1);//Теперь отображается строка верно
sw1 := s1;// Преопразование будет правильно работать если AnsiString присвоить WideString
showmessage(AnsiUpperCase(sw1));//Отображение верное. Showmessage внутри снова преобразует Wide в Ansi
//Если применить UpperCase, то только латиница буде преобразована к верхнему регистру
end;
- Attid
- долгожитель
- Сообщения: 2589
- Зарегистрирован: 27.10.2006 17:29:15
- Откуда: 44°32′23.63″N 41°2′25.2″E
- Контактная информация:
а я чет AnsiUpperCase даже не стал пробывать, он ведь анси а utfupper не нашел =)
а с WideString я прекрастно и в МСЕ работаю правда и принципы знаю, правда там оно завется отдельным msestring только чет про аналогии не подумал, спасибо.
а с WideString я прекрастно и в МСЕ работаю правда и принципы знаю, правда там оно завется отдельным msestring только чет про аналогии не подумал, спасибо.
Функция AnsiUpperCase возвращает "ЙЦУКЕН", или вообще со строками такое?
А в Windows Lazarus тоже UTF юзает, или cp-1251?
А в Windows Lazarus тоже UTF юзает, или cp-1251?
