-
Есть такой код:
procedure TForm1.Button3Click(Sender: TObject);
Var
S : String;
Lst: TStrings;
begin
Lst:=TStringList.Create;
Lst.LoadFromFile('s2.txt');
S:=Copy(Lst[2], 5, 9);
ShowMessage(S);
Lst.Free;
end;
Которым можно скопировать с ( S2.TXT ) 9 символов начиняя с 5-го, при этом с 3-тей строчки (0-это первая)
Вопрос: Как вырезать и как вставлять?
-
AnsiStringReplace или как-то похоже звучит.
-
хотя нет, не пойдет. точнее, может лишнего наделать.
проще всего:
вырезание:
Snew := Copy(Sold, 1, 3) + Copy(Sold, 5, 4);
вставляние:
Snew := Copy(Sold, 1, 3) + 'tralala' + Copy(Sold, 3, 8);
последнее количество можно определить автоматически, используя Length()
-
да, учитывая многострочность, надеюсь, это не имелось ввиду? если имелось, то Tstringlist имеет procedure Insert(Index: Integer; const S: string) procedure Delete(Index: Integer) ;
-
Ну и как мне например с 25 строчки 110 символа вырезать 9 символов, потом закрыть и сохранить S2.TXT
-
> KilkennyCat © (18.03.08 01:12) [3]
>
> да, учитывая многострочность
А если "не учитывая многострочность", то есть тоже самое по написанию. Insert и Delete. Токо это уже не методы TSringList, а процедуры из модуля System.
P.S. Хотя "вырезание" - это Copy+Delete.
-
> mr1Andersen (18.03.08 01:21) [4]
>
> Ну и как мне например с 25 строчки 110 символа вырезать
> 9 символов, потом закрыть и сохранить S2.TXT
>
Сначала позаботься о грамматике в вопросе. А то непонятно что, откуда и скоко отрезать.
-
Это понятно, но как мне применить Insert и Delete к конкретной позиции
-
> потом закрыть и сохранить S2.TXT
О! А тут ещё и это. Тогда читать книжки и конспекты. (Последние можно одолжить у товарищей, если хоть кто-то из них посещал занятия).
-
О, это очень сложно...
Lst[24] := Copy(Lst[24], 110, 9) + Copy(Lst[24], 120, length(Lst[24]) - 120); (точность +-1 символ, сами думайте, и проверку делайте).
Lst.SaveToFile('S2.TXT');
а вот как закрыть неоткрытое - не знаю.
А вообще, формулируйте хотя бы задачу точнее, мож у вас там и нет 119 символов, мож только 111 и остальные 8 с другой строки должны удаляться... и че непонятного было в предыдущих ответах? Или в справке?
-
> [5] Германн © (18.03.08 01:23)
хм... а я и непомню уже... в принципе, через копи тоже можно че угодно сотворить :)
-
> P.S. Хотя "вырезание" - это Copy+Delete.
Если "вырезание" без последующего "вставления", что помоему и нужно автору, то достаточно System.Delete() :)
> [0] mr1Andersen (17.03.08 23:48)
Изучай Copy, Insert, Delete + F1. Все их уже здесь озвучили. Так же есть стандартный модуль StrUtils.pas и не стандартных полно, например RxStrUtils - для работы со строками.... много интересного найдешь в них.
-
чтобы было понятнее:
есть S2.TXT, в котором есть текст:
сфере средств разработки
сегодня объявила о выпус
ке серии продуктов Delphi
нужно по нажатию на Button3, иметь в S2.TXT, такой текст:
сфере средств разработки
сегодня объя выпус
ке серии продуктов Delphi
При этом на перед ни известно какой текст записан в S2.TXT
Нужно просто удалить с текста пару букв с конкретной (заданной) позиции.
-
отлично.
-
> [12] mr1Andersen (18.03.08 01:39)
Читай ветку с начала)
-
> [14] {RASkov} © (18.03.08 01:46)
ты ж его зациклил бесконечно, не указав условие выхода :)
-
Это к примеру (mr1Andersen (18.03.08 01:39) [12])
Суть вопроса ни меняется
-
> {RASkov} © (18.03.08 01:46) [14]
Не стараюсь "выпячиваться", но рекомендую всё-же первым делом читать то, что в [8] указано :)
-
> [15] KilkennyCat © (18.03.08 01:50)
> ты ж его зациклил бесконечно
Ну будет хоть кто-то спец по строкам :)
> не указав условие выхода
А вот когда станет спецом по строкам, тогда сможет вырезать мой пост [14] и выйти)
-
> [17] Германн © (18.03.08 01:51)
[8] - это как подпрограмма в данной ветке... т.е. нормально все)