Не добавляются русские строки в Memo из потока

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Не добавляются русские строки в Memo из потока

Сообщение Sawer » 17.07.2008 11:16:31

Lazarus 0.9.25/FPC 2.2.3/SVN 15716
Есть форма А с Memo, форма Б с кнопкой и поток.
Процедура на форме А:
Код: Выделить всё
procedure TFrLog.AddRecord(Rec: string);
begin
  MmLog.Lines.Add(DateTimeToStr(Date+Time)+' '+Rec);
end;

Строки с русскими буквами из потока в принципе не добавляются:
Это работает:
Код: Выделить всё
procedure TClient.LogAdd;
begin
  FrLog.AddRecord(FLog);
end;
...
FLog := 'test '; Synchronize(@LogAdd);

А это НЕТ!!! Вообще ничего не добавляется:
Код: Выделить всё
procedure TClient.LogAdd;
begin
  FrLog.AddRecord(FLog);
end;
...
FLog := 'тест '; Synchronize(@LogAdd);

Если же добавлять с формы Б нажимая на кнопку то все ОК!!! Русские строки нормально работают!
Код: Выделить всё
procedure TFrMenu.Button1Click(Sender: TObject);
var FLog: string;
begin
  FLog := 'тест';
  FrLog.AddRecord(FLog);
end;
Последний раз редактировалось Sawer 17.07.2008 13:00:42, всего редактировалось 1 раз.
Sawer
новенький
 
Сообщения: 69
Зарегистрирован: 15.05.2007 22:53:48

Re: Не добавляются русские строки в Memo из потока

Сообщение Attid » 17.07.2008 12:01:47

а какой ОС и виджет ?
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Re: Не добавляются русские строки в Memo из потока

Сообщение Vadim » 17.07.2008 12:42:44

Sawer писал(а):FLog := 'test ';

А что такое FLog? На кого этот зверь похож?
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Не добавляются русские строки в Memo из потока

Сообщение Sawer » 17.07.2008 12:44:23

Attid писал(а):а какой ОС и виджет ?

Vista Home, никаких посторонних компонентов не установлено!

Добавлено спустя 1 минуту 6 секунд:
Vadim писал(а):
Sawer писал(а):FLog := 'test ';

А что такое FLog? На кого этот зверь похож?

FLog: string;
Sawer
новенький
 
Сообщения: 69
Зарегистрирован: 15.05.2007 22:53:48

Re: Не добавляются русские строки в Memo из потока

Сообщение Vadim » 17.07.2008 16:30:55

Sawer писал(а):FLog: string;

А FrLog что такое? А что такое LogAdd?
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Не добавляются русские строки в Memo из потока

Сообщение Sawer » 17.07.2008 16:56:14

Vadim писал(а):
Sawer писал(а):FLog: string;

А FrLog что такое? А что такое LogAdd?

Есть форма FrLog с компонентом MmLog (TMemo) и процедурой:
Код: Выделить всё
procedure TFrLog.AddRecord(Rec: string);
begin
  MmLog.Lines.Add(DateTimeToStr(Date+Time)+' '+Rec);
end;


Есть форма FrMenu c кнопкой Button1 и процедурой:
Код: Выделить всё
procedure TFrMenu.Button1Click(Sender: TObject);
var FLog: string;
begin
  FLog := 'тест';
  FrLog.AddRecord(FLog);
end;


Есть поток TClient:
Код: Выделить всё
  TClient = class(TThread)
  private
    TClient: TTCPBlockSocket;
    FLog: string;
  protected
    procedure Execute; override;
  public
    procedure LogAdd;
  end;

procedure TlntClt.LogAdd;
begin
  FrLog.AddRecord(FLog);
end;

procedure TlntClt.Execute;
begin
  FLog := 'test '+FDevNm;
  Synchronize(@LogAdd);
end;


Добавлено спустя 1 минуту 34 секунды:
вопрос тот же! нет добавляются строки с русскими символами!
Sawer
новенький
 
Сообщения: 69
Зарегистрирован: 15.05.2007 22:53:48

Re: Не добавляются русские строки в Memo из потока

Сообщение yser » 17.07.2008 17:39:11

Скорее всего у тебя русский текст ANSI, преобразуй его в UTF8 - должно работать. У меня заработало.
yser
новенький
 
Сообщения: 29
Зарегистрирован: 06.02.2008 11:27:40

Re: Не добавляются русские строки в Memo из потока

Сообщение Sawer » 17.07.2008 17:42:29

yser писал(а):Скорее всего у тебя русский текст ANSI, преобразуй его в UTF8 - должно работать. У меня заработало.

а как преобразовать?
Sawer
новенький
 
Сообщения: 69
Зарегистрирован: 15.05.2007 22:53:48

Re: Не добавляются русские строки в Memo из потока

Сообщение yser » 18.07.2008 07:30:48

в этом посте есть функции Tria_AnsiToUtf8 и Tria_Utf8ToAnsi
viewtopic.php?f=6&t=3517&p=25367&hilit=Tria_#p25367
yser
новенький
 
Сообщения: 29
Зарегистрирован: 06.02.2008 11:27:40

Re: Не добавляются русские строки в Memo из потока

Сообщение Vadim » 18.07.2008 08:29:43

Добавлено спустя 11 минут 33 секунды:
Sawer писал(а):Есть поток TClient:

У Вас вместо строки с русскими буквами добавляется пустая строка или нет даже пустой строки? Именно в этом потоке.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Не добавляются русские строки в Memo из потока

Сообщение Sawer » 21.07.2008 06:55:06

Vadim писал(а):Добавлено спустя 11 минут 33 секунды:
Sawer писал(а):Есть поток TClient:

У Вас вместо строки с русскими буквами добавляется пустая строка или нет даже пустой строки? Именно в этом потоке.

даже нет пустой строки!!! вообще ничего!!
а если все по латиницей то все нормально!!
Sawer
новенький
 
Сообщения: 69
Зарегистрирован: 15.05.2007 22:53:48

Re: Не добавляются русские строки в Memo из потока

Сообщение Padre_Mortius » 21.07.2008 10:19:04

Русский текст необходимо конвертировать в UTF8 для нормального отображения на контролах и лазарь должен быть собран с параметром -dWindowsUnicodeSupport. Для конвертации сгодится даже AnsiToUTF8
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Re: Не добавляются русские строки в Memo из потока

Сообщение Sawer » 21.07.2008 15:11:35

Padre_Mortius писал(а):Русский текст необходимо конвертировать в UTF8 для нормального отображения на контролах и лазарь должен быть собран с параметром -dWindowsUnicodeSupport. Для конвертации сгодится даже AnsiToUTF8

к 0.9.26 сборке исправят все?
Sawer
новенький
 
Сообщения: 69
Зарегистрирован: 15.05.2007 22:53:48

Re: Не добавляются русские строки в Memo из потока

Сообщение Padre_Mortius » 21.07.2008 19:01:33

Кого исправят? Это вроде не ошибка, а перевод на единую кодировку для всех платформ и систем
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Re: Не добавляются русские строки в Memo из потока

Сообщение Sawer » 22.07.2008 07:20:56

а почему текст сразу в кодировке utf8 не вписывается, когда я его набираю в Лазаре?
Sawer
новенький
 
Сообщения: 69
Зарегистрирован: 15.05.2007 22:53:48


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: *Rik* и гости: 11

Рейтинг@Mail.ru