С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Delphi для начинающих

Войти
Регистрация
Восстановить пароль
 
akk
44 / 44 / 7
Регистрация: 28.01.2012
Сообщений: 341
#1

Теряются русские символы - Delphi

02.07.2013, 20:05. Просмотров 471. Ответов 4
Метки нет (Все метки)

Использую функцию
Delphi
1
function ExtractStrings(Separators, WhiteSpace: TSysCharSet; Content: PChar; Strings: TStrings): Integer;
Но потом не корректно обрабатываются русские буквы, я думаю что это из-за передачи аргументом PChar(Memo1.Text)
Как можно это исправить? И как нужно работать с русскими буквами?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.07.2013, 20:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Теряются русские символы (Delphi):

Не воспринимает русские символы при комментировании - Delphi
Hello World!! Не воспринимает русские символы при комментировании Мб с вин10 не подружился, плагин какой-нить ему скормить? Поясните...

Регулярные выражения, не видит русские символы - Delphi
Регулярные выражения, не видит русские символы. Дан текст, например такой (разделитесь ; ) wolf5123;emma84192 alex;q3681 ...

программа не хочет кодировать русские символы, принимает за пробелы (пустоту) - Delphi
Никак не могу разобраться. Программа может закодировать символы только английского алфавита, но при вводе русских символов в программе...

TAgg2D и русские символы - Delphi
Есть такая чудесная библиотека для рисования - AddPass. Позволяет рисовать на высшем уровне: антиальясинг, всевозможные трансмормации и...

Как удалить из Memo1 только не русские символы??? - Delphi
Все сказано в заголовке. (дешево и сердито)

символы '#$D#$A' - в строке. Отображаются как перенос строки. Нужно убрать. Не дают перейти по ссылке в которой есть эти символы - Delphi
символы '#$D#$A' - в строке. Отображаются как перенос строки. Нужно убрать. Не дают перейти по ссылке в которой есть эти символы

4
Dr_Quake
Заблокирован
03.07.2013, 00:50 #2
Без кода телепаты в отпуске.
0
akk
44 / 44 / 7
Регистрация: 28.01.2012
Сообщений: 341
03.07.2013, 01:24  [ТС] #3
Код, конечно не очень. Тут я сравниваю строки состоящие из одного символа. Но не работает только для русского текста, на английском все работает прекрасно.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
    d_ss: integer;
    res, s1,s2: String;
    sl: TStringList;
begin
  res:='';
  s1:='';
  s2:='';
  sl:= TStringList.Create;                         
  ExtractStrings([' ',';', ',','.','!','?',':','"'], [' '], PChar(Memo1.Text), sl);
  Memo2.Text:= '';
  for i:=0 to sl.Count-2 do
  begin
     d_ss:=UTF8Length(sl[i]);
     s1:= UTF8Copy(sl[i],d_ss,1);
     s2:= UTF8Copy(sl[i+1], 1,1);
     if AnsiCompareText(s1,s2)=0 then
         res:=res+ sl[i]+'~'+sl[i+1]+#13#10;
  end;
       Memo2.Text:=res;
end;
0
Dr_Quake
Заблокирован
03.07.2013, 02:21 #4
У тебя бредовый код от начала и до конца.

Первое - TStringList может сам разбивать на строки, Delimiter, StrictDelimiter, надо несколько - проще прогнать несколько TSL или копируя в тот же.

Второе - ВСЯ работа со строками должна идти в нативе для D2009+,тут это КЛЮЧЕВОЕ ЗНАЧЕНИЕ, если у тебя 2009+ - у тебя в memo1.text уже Unicode если верно загружено, если неверно - ручная загрузка с использованием Tencoding.UTF8. методов и readln() базовых буквально, далее всё сравнение уже нафиг не нужно как и спецфункции utf8copy/length твои, вся работа в UTF16 fixed-width, на выводе выводим через тот же Tencoding рекодер. Если Delphi старый неюникодный - без кода функций и места где неверно найденного дебагом говорить не о чем.
1
akk
44 / 44 / 7
Регистрация: 28.01.2012
Сообщений: 341
03.07.2013, 13:19  [ТС] #5
Цитата Сообщение от Dr_Quake Посмотреть сообщение
У тебя бредовый код от начала и до конца.
Я думал, что если в извлекать из строки символ то он может не правильно перекодироваться.
Конечно нужно сравнивать так
Delphi
1
 if (sl[i])[d_ss]=(sl[i+1])[1] then ...
Цитата Сообщение от Dr_Quake Посмотреть сообщение
TStringList может сам разбивать на строки
Как? Если TStringList у меня изначально пустой, у меня текст находится в мемо, преобразовывается в список из слов.

Цитата Сообщение от Dr_Quake Посмотреть сообщение
если у тебя 2009+ - у тебя в memo1.text уже Unicode
Спасибо! Этим все решилось.
0
03.07.2013, 13:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.07.2013, 13:19
Привет! Вот еще темы с ответами:

Удалить все символы строки до последней точки, и взять символы, идущие только после последней точки - Delphi
Имеется текст примерно такого вида : attachment; filename="Subway_Surfers_1.26.0_money.apk" нужно сделать чтобы в первый edit вывело...

Until in [Русские буквы] - Delphi
RAD studio 10 seattle, мб дело не в программе, собственно если поменять русские буквы в until .. in на until ... in из цикла выходит, с...

Не вводятся русские буквы - Delphi
на onKeyPress'е if not( Key in + ) then Key := #0; Должны вводится только русские буквы, но ввести их не могу, в чем трабл?

URL и русские буквы - Delphi
Процедура в потоке не воспринимает русские буквы: procedure TMyThread.Execute; var q:tmemorystream; begin ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.