Модератор: Модераторы
v-t-l писал(а):Вообще-то, по уму надо было бы сделать в fpc, как в последней делфе - все string по умолчанию равны widestring (UTF-16), удобнее было бы.
Или добавить опцию компилятора для такого режима.
Attid писал(а):жалусь гтк2 линукс
- Код: Выделить всё
InputQuery('caption','promt',vstr);
в аттаче
дебург и 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.
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 писал(а):(2 окна, больше пока не использовал)
Attid писал(а):Logo
покажи версию ядра\иксов\гтк\и gdb плиз.
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;
Padre_Mortius писал(а):...
А вот с TEdit проблема похоже не только у меня)
Павел Ишенин писал(а):Ничего не полнял из обсуждения, но если вы сможете выразить на английском в чем суть проблемы и написать об этом в баг-трекер, то она (проблема) однозначно будет решаться.
Logo писал(а):А вчем проявляется проблема TEdit?
Padre_Mortius писал(а):Не попадают данные в TEDit. Если получится создать testcase, то выложу в багрепорт
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;
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 50