Подтвердить что ты не робот

Удаление '# $A' из строки Delphi

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

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

Тогда я положил

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

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

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

Спасибо

4b9b3361

Ответ 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), тогда вернет позицию.