Удаление «# $ A» из строки Delphi - PullRequest
12 голосов
/ 21 июня 2011

Я изменяю приложение delphi. В нем я получаю текст из поля со списком. Проблема в том, что когда я сохраняю текст в таблице, он содержит возврат каретки. В режиме отладки это выглядит так:

newStr := 'Projector Ex320u-st Short Throw '#$A'1024 X 768 2700lm'

Тогда я поставил

newStr := StringReplace(newStr,'#$A','',[rfReplaceAll]);

чтобы убрать '# $ A'. Но это не удаляет его.

Есть ли другой способ сделать это ..

Спасибо

Ответы [ 2 ]

40 голосов
/ 21 июня 2011

Удалить кавычки вокруг # $ A:

newStr := StringReplace(newStr,#$A,'',[rfReplaceAll]);

Символ # сообщает delphi, что вы указываете символ с помощью его числового кода.$ Говорит, что вы указываете в шестнадцатеричном.Значение A - это значение.

В кавычках вы ищете наличие символов # $ A в строке, которые не найдены, поэтому ничего не заменяется.

2 голосов
/ 09 июня 2016

Адаптировано с http://www.delphipages.com/forum/showthread.php?t=195756

'#' обозначает символ ASCII, за которым следует байтовое значение (0..255).

$A - шестнадцатеричное число, равное 10, а $D - шестнадцатеричное, равное 13.

#$A и #$D (или #10 и #13) являются символами перевода строки ASCII и возврата каретки соответственно.

Перевод строки = ASCII-символ $A (шестнадцатеричный код) или 10 (дек): #$A или #10

Возврат каретки = ASCII символ $D (шестнадцатеричный код) или 13 (дек): #$D или #13

Итак, если вы хотите добавить 'Ok' и еще одну строку:

Memo.Lines.Add('Ok' + #13#10)

или

Memo.Lines.Add('Ok' + #$D#$A)

Чтобы удалить управляющие символы (и пробелы) с начала и конец строки:

MyString := Trim(MyString)

Почему Pos () не находит их?

Именно так Delphi отображает управляющие символы вам, если вы должны были сделать Pos(#13, MyString) или Pos(#10, MyString) тогда вернет позицию.

...