![]() |
|
|
|
|
#1
|
|||
|
|||
|
В TEdit через буфер обмена попадает строка, которая может содержать спецсимволы. Мне надо при выходе из эдита найти эти символы и заменить их другими, обычными. Раньше я делал это в VBA, все было достаточно просто. Здесь (в Delphi 7) все мои попытки наталкиваются на то, что передаваемые в параметры спецсимволы (a и b) показываются как пустые и не обрабатываются. При наличии хоть одного спецсимвола вся строка становится пустой
.Код:
function substitute(s:WideString; a,b: WideChar): WideString;
var
found: boolean;
i: integer;
c: WideString;
begin
found:=true;
while found do begin
found:=false;
for i:=1 to Length(s) do begin
c:=copy(s,i,1);
if c=a then begin
found:=true;
s:=copy(s,1,i-1)+b+copy(s,i+1,1000);
end;
end;
end;
Result:=s;
end;
procedure TForm1.Edit1Exit(Sender: TObject);
var
s: WideString;
begin
AlignEditTRA.Color:=cl3DLight;
s:= Edit1.Text;
s := substitute(s, WideChar(884), WideChar(''''));
s := substitute(s, WideChar(305), WideChar('I');
...
Edit1.Text:=s;
end;PS. Что такое гугль я знаю, и он уже в течение 2 часов закипает от моих запросов. Если пишу сюда - значит ответа не нашел. PPS. Под "спецсимволами" я имею в виду символы, код которых больше 255. |
|
#2
|
||||
|
||||
|
Какая версия Дельфи?
Как это код мог откомпилироваться? В строке 28 не хватает закрывающей скобки. Последний раз редактировалось angvelem, 26.10.2012 в 04:53. |
|
#3
|
|||
|
|||
|
Как-то странно работает форум... Я нажал "Правка", чтобы подкорректировать топик - создалась новая тема. Просьба к модераторам удалить эту. Я не хотел флудить...
|
|
#4
|
|||
|
|||
|
Цитата:
Я действительно добавил вторую строку сюда прежде чем раскомментить ее в основном коде; там скобку добавил, здесь нет . Извините. Пожалуйста, посмотрите мое второе созданное случайно сообщение. http://www.delphisources.ru/forum/sh...ad.php?t=22428 |
|
#5
|
||||
|
||||
|
Ошибочного топика уже нет (случай он создаться не мог). Подкинь примерную строку для Edit-а.
|
| Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
alexingor (26.10.2012)
| ||
|
#6
|
|||
|
|||
|
Цитата:
Цитата:
Тут проблема другая - надо создать свой класс, наследник TAlignEdit, в котором свойство Text имело бы тип WideString. Я сам никогда такого еще не делал, но надеюсь, что тут дядя Гугль поможет. Спасибо, Angvelem, за участие. |
|
#7
|
||||
|
||||
|
Цитата:
Установи себе компоненты TNT и используй TTntEdit вместо TEdit. Последнюю бесплатную версию компонент TNT можно скачать >>отсюда<<. Цитата:
Вот так попроще будет: Код:
function substitute(const s: WideString; a, b: WideChar): WideString;
var
i: Integer;
begin
Result := s;
for i := 1 to Length(Result) do
if Result[i] = a then Result[i] := b;
end; |
| Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
alexingor (26.10.2012)
| ||
|
#8
|
|||
|
|||
|
Цитата:
Цитата:
|