Удаление '# $A' из строки Delphi
Я изменяю приложение delphi. В нем я получаю текст из поля со списком. Проблема в том, что когда я сохраняю текст в таблице, он содержит возврат каретки. В режиме отладки это выглядит следующим образом.
newStr := 'Projector Ex320u-st Short Throw '#$A'1024 X 768 2700lm'
Тогда я положил
newStr := StringReplace(newStr,'#$A','',[rfReplaceAll]);
чтобы удалить предмет "# $A". Но это не удаляет его.
Есть ли другой способ сделать это.
Спасибо
Ответы
Ответ 1
Удалите кавычки вокруг # $A:
newStr := StringReplace(newStr,#$A,'',[rfReplaceAll]);
# указывает delphi, что вы указываете символ по его числовому коду.
$ Говорит, что вы указываете в шестнадцатеричном формате.
Значение A - это значение.
С кавычками вы ищете наличие символов # $A в строке, которые не найдены, поэтому ничего не заменяется.
Ответ 2
Адаптировано из http://www.delphipages.com/forum/showthread.php?t=195756
"#" обозначает символ ASCII, за которым следует байт (0..255).
$A
является шестнадцатеричным, равным 10
, а $D
является шестнадцатеричным, что равно 13
.
#$A
и #$D
(или #10
и #13
) являются символами строки ASCII и символами возврата каретки соответственно.
Линейный канал = символ ASCII $A
(шестнадцатеричный) или 10
(dec): #$A
или #10
Возврат каретки = символ ASCII $D
(шестнадцатеричный) или 13
(dec): #$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)
, тогда
вернет позицию.