-
Есть такой код:
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] - это как подпрограмма в данной ветке... т.е. нормально все)
-
та же задача:
есть текст: «Таня»
есть S2.TXT, в котором есть текст:
сфере средств разработки
сегодня объявила о выпус
ке серии продуктов Delphi
нужно по нажатию на Button3, иметь в S2.TXT, такой текст:
сфере средств разработки
сегодня объяТанявила выпус
ке серии продуктов Delphi
При этом на перед ни известно какой текст записан в S2.TXT
Нужно просто ВСТАВИТЬ «Таня» в конкретную (заданную) позицию.
-
Черт.... он вырвался :(
-
> [21] {RASkov} © (18.03.08 01:55)
Ну, наверное, про циклы там еще не проходили.
-
> mr1Andersen (18.03.08 01:51) [16]
>
> Это к примеру (mr1Andersen (18.03.08 01:39) [12])
> Суть вопроса ни меняется
Ну естественно суть вопроса измениться не может в принципе.
"Мне нужно выполнить что-то типа [12].
Я надыбал в И-нете, что-то типа [0].
Как мне изменить что-то типа [0], на что-то типа [12]?
Но изучать предмет (я не хочу/мне лень/мне некогда! отстаньте вы все!) "! Дайте код!
-
А ведь потом Германн начнет упрекать меня за пьянство....
-
> KilkennyCat © (18.03.08 01:59) [24]
>
> А ведь потом Германн начнет упрекать меня за пьянство...
> .
>
Кончай флудить! Я ещё никого и никогда не упрекал за пьянство без причины.
Или ты ответил не в ту ветку, в которую хотел? :)
-
Ну вот, я же говорил...
-
> KilkennyCat © (18.03.08 01:59) [24]
А ты уже прекратил есть маленьких детей?
-
Если применить к [12] такой код:
Lst[1] := Copy(Lst[1], 7, length(Lst[1]));
то получается, вот это:
сфере средств разработки
я объявила о выпус
ке серии продуктов Delphi
Как мне удалять ни с первой позиции, а с 12-й?
-
> Как мне удалять не с первой позиции, а с 12-й?
Урок английского.
"Удалять" - "Delete".
"Копировать" - "Copy".
-
> Германн © (25.03.08 00:42) [29]
Ок, если ты знаешь, напиши одну строчку как удалить через Delete
Lst[1] := Delete(…
-
> Lst[1] := Delete(…
За две недели ты так и нашел желания посмотреть справку.
-
Германн © (08.04.08 14:23) [31]
справку
всплывающей подсказки более чем достаточно
-
Неужели Вы думаете что мне легче ждать две недели и сломяк справку посмотреть!
Если я применяю Lst[1] := Delete(Lst[1], 2, 1); выкидывает:
[Error] Creck.pas(68): Constant object cannot be passed as var parameter
[Fatal Error] CR.dpr(5): Could not compile used unit 'Creck.pas'
-
> mr1Andersen (10.04.08 01:42) [33]
>
> Неужели Вы думаете что мне легче ждать две недели и сломяк
> справку посмотреть!
> Если я применяю Lst[1] := Delete(Lst[1], 2, 1); выкидывает:
>
> [Error] Creck.pas(68): Constant object cannot be passed
> as var parameter
> [Fatal Error] CR.dpr(5): Could not compile used unit 'Creck.
> pas'
>
Можешь не верить, но мы так и думаем, что тебе "легче ждать две недели и сломяк справку посмотреть!"
Если бы ты посмотрел справку, то никак бы не употребил процедуру Delete в выражении.
-
> mr1Andersen (10.04.08 01:42) [33]
А вот я не понял (тупой просто), чем "сломяк" от "впадлу" оличается? И зачем его ждать две недели? Ежели он сам, по-идее, на первой пришёл.