Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.03.2011, 08:44   #1
maxefficiently
Пользователь
 
Регистрация: 12.02.2011
Сообщений: 42
Вопрос удаление из строки лишних символов

Всем привет, помогите, пожалуйста, решить задачу:
имеем строки типа:
00000
11111
22222

нужно 10-й символ изменить на А. Однако, после 1-й строки идёт перенос на новую строку. Что я пытаюсь: сделать все строки в одну строку и заменить 10-й символ на А при этом удаляя перенос строки, чтобы именно 10-й символ заменился без смешения из-за переноса строки.

Имею код:
Код:
  
   var    str:tstringlist;  s:string; i:integer;
begin
  str:=tstringlist.Create;
  str.LoadFromFile('1.txt');
  s:=str.Text;
  i:=9999;
  while i<>0 do
  begin
  i:=pos(#13#10,s); //удаляю переносы, использую #13 или #13#10
  if i<>0 then delete(s,i,1);
  end;
  str.Text:=s;
  str.SaveToFile('111.txt'); //вид в 2-е строки с переносом, откуда не понял
  memo1.Lines.Add(s);       //вид в 1-у строку
  showmessage(inttostr(length(s))); //получается на 1-н символ больше, на какой не понял, если в ручную пересчитать
  str.Free;
end;
в итоге, по факту, например 20 символов, а showmessage показывает 21, когда в memo1 перехожу стрелкой клавиатуры вправо при подходе к символу ":" почему-то нужно 2-а раза на клавишу нажать, чтобы перейти дальше; memo1 показывает текст в одну линию, а в str.SaveToFile('111.txt') уже в 2-е.

Подскажите, пожалуйста, как все-таки удалить все символы, чтобы по факту было 20 символов и программа показывала 20 символов и все в одну строку, тогда 10-й (или любой иной) символ точно на А смогу заменить, а не другой символ ничаяно.
maxefficiently вне форума Ответить с цитированием
Старый 01.03.2011, 08:48   #2
maxefficiently
Пользователь
 
Регистрация: 12.02.2011
Сообщений: 42
По умолчанию

вроде исправил, в delete(s,i,1); сделал так delete(s,i,2);

это правильно, что 2-а символа удаляю, типа #13#10?
maxefficiently вне форума Ответить с цитированием
Старый 01.03.2011, 08:53   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

не разбираясь особо в Вашем хитроумном алгоритме.

Но, раз Вы переводы хотите удалить, так удаляйти их полностью, а не на половину:
Цитата:
Код:
if i<>0 then delete(s,i,2);
Добавлено
ну вот, пока я писал пост, Вы уже и сами разобрались!

Цитата:
это правильно, что 2-а символа удаляю, типа #13#10?
эээ... Это Вы нас спрашиваете, правильно ли Вы делаете, что удаляете все переносы строк?
(т.е. фактически собираете строку в одну?!)
Вам виднее!!

Последний раз редактировалось Serge_Bliznykov; 01.03.2011 в 08:55.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление лишних символов из Memo NSV Общие вопросы Delphi 10 23.11.2012 08:38
Удаление символов из строки NAS1977mu Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 09.01.2011 13:05
Удаление символов из строки Jasper92 Общие вопросы C/C++ 1 17.01.2010 20:41
Удаление символов из строки stscolt Помощь студентам 0 28.12.2009 12:34
Аналог функции Trim-удаление лишних пробелов в начале и в конце передаваемой строки GULINA Помощь студентам 6 23.05.2009 15:07