Конференция "Начинающим" » вырезать вставлять [D7, XP]
 
  • mr1Andersen (17.03.08 23:48) [0]
    Есть такой код:

    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-это первая)

    Вопрос: Как вырезать и как вставлять?
  • KilkennyCat © (18.03.08 01:01) [1]
    AnsiStringReplace или как-то похоже звучит.
  • KilkennyCat © (18.03.08 01:05) [2]
    хотя нет, не пойдет. точнее, может лишнего наделать.
    проще всего:
    вырезание:
    Snew := Copy(Sold, 1, 3) + Copy(Sold, 5, 4);
    вставляние:
    Snew := Copy(Sold, 1, 3) + 'tralala' + Copy(Sold, 3, 8);
    последнее количество можно определить автоматически, используя Length()
  • KilkennyCat © (18.03.08 01:12) [3]
    да, учитывая многострочность, надеюсь, это не имелось ввиду? если имелось, то Tstringlist имеет procedure Insert(Index: Integer; const S: string) procedure Delete(Index: Integer) ;
  • mr1Andersen (18.03.08 01:21) [4]
    Ну и как мне например с 25 строчки 110 символа вырезать 9 символов, потом закрыть и сохранить S2.TXT
  • Германн © (18.03.08 01:23) [5]

    > KilkennyCat ©   (18.03.08 01:12) [3]
    >
    > да, учитывая многострочность

    А если "не учитывая многострочность", то есть тоже самое по написанию. Insert и Delete. Токо это уже не методы TSringList, а процедуры из модуля System.

    P.S. Хотя "вырезание" - это Copy+Delete.
  • Германн © (18.03.08 01:25) [6]

    > mr1Andersen   (18.03.08 01:21) [4]
    >
    > Ну и как мне например с 25 строчки 110 символа вырезать
    > 9 символов, потом закрыть и сохранить S2.TXT
    >

    Сначала позаботься о грамматике в вопросе. А то непонятно что, откуда и скоко отрезать.
  • mr1Andersen (18.03.08 01:27) [7]
    Это понятно, но как мне применить Insert и Delete к конкретной позиции
  • Германн © (18.03.08 01:28) [8]

    > потом закрыть и сохранить S2.TXT

    О! А тут ещё и это. Тогда читать книжки и конспекты. (Последние можно одолжить у товарищей, если хоть кто-то из них посещал занятия).
  • KilkennyCat © (18.03.08 01:30) [9]
    О, это очень сложно...
    Lst[24] := Copy(Lst[24], 110, 9) + Copy(Lst[24], 120, length(Lst[24]) - 120); (точность +-1 символ, сами думайте, и проверку делайте).
    Lst.SaveToFile('S2.TXT');
    а вот как закрыть неоткрытое - не знаю.
    А вообще, формулируйте хотя бы задачу точнее, мож у вас там и нет 119 символов, мож только 111 и остальные 8 с другой строки должны удаляться... и че непонятного было в предыдущих ответах? Или в справке?
  • KilkennyCat © (18.03.08 01:31) [10]
    > [5] Германн ©   (18.03.08 01:23)

    хм... а я и непомню уже... в принципе, через копи тоже можно че угодно сотворить :)
  • {RASkov} © (18.03.08 01:32) [11]
    > P.S. Хотя "вырезание" - это Copy+Delete.

    Если "вырезание" без последующего "вставления", что помоему и нужно автору, то достаточно System.Delete() :)


    > [0] mr1Andersen   (17.03.08 23:48)

    Изучай Copy, Insert, Delete + F1. Все их уже здесь озвучили. Так же есть стандартный модуль StrUtils.pas и не стандартных полно, например RxStrUtils - для работы со строками.... много интересного найдешь в них.
  • mr1Andersen (18.03.08 01:39) [12]
    чтобы было понятнее:
    есть S2.TXT, в котором есть текст:

    сфере средств разработки
    сегодня объявила о выпус
    ке серии продуктов Delphi

    нужно по нажатию на Button3, иметь в S2.TXT, такой текст:

    сфере средств разработки
    сегодня объя выпус
    ке серии продуктов Delphi

    При этом на перед ни известно какой текст записан в S2.TXT
    Нужно просто удалить с текста пару букв с конкретной (заданной) позиции.
  • KilkennyCat © (18.03.08 01:42) [13]
    отлично.
  • {RASkov} © (18.03.08 01:46) [14]
    > [12] mr1Andersen   (18.03.08 01:39)

    Читай ветку с начала)
  • KilkennyCat © (18.03.08 01:50) [15]
    > [14] {RASkov} ©   (18.03.08 01:46)

    ты ж его зациклил бесконечно, не указав условие выхода :)
  • mr1Andersen (18.03.08 01:51) [16]
    Это к примеру (mr1Andersen   (18.03.08 01:39) [12])
    Суть вопроса ни меняется
  • Германн © (18.03.08 01:51) [17]

    > {RASkov} ©   (18.03.08 01:46) [14]

    Не стараюсь "выпячиваться", но рекомендую всё-же первым делом читать то, что  в [8] указано :)
  • {RASkov} © (18.03.08 01:52) [18]
    > [15] KilkennyCat ©   (18.03.08 01:50)
    > ты ж его зациклил бесконечно

    Ну будет хоть кто-то спец по строкам :)

    > не указав условие выхода

    А вот когда станет спецом по строкам, тогда сможет вырезать мой пост [14] и выйти)
  • {RASkov} © (18.03.08 01:54) [19]
    > [17] Германн ©   (18.03.08 01:51)

    [8] - это как подпрограмма в данной ветке... т.е. нормально все)
  • mr1Andersen (18.03.08 01:54) [20]
    та же задача:
    есть текст: «Таня»
    есть S2.TXT, в котором есть текст:

    сфере средств разработки
    сегодня объявила о выпус
    ке серии продуктов Delphi

    нужно по нажатию на Button3, иметь в S2.TXT, такой текст:

    сфере средств разработки
    сегодня объяТанявила выпус
    ке серии продуктов Delphi

    При этом на перед ни известно какой текст записан в S2.TXT
    Нужно просто ВСТАВИТЬ «Таня» в конкретную (заданную) позицию.
  • {RASkov} © (18.03.08 01:55) [21]
    Черт.... он вырвался :(
  • KilkennyCat © (18.03.08 01:57) [22]
    > [21] {RASkov} ©   (18.03.08 01:55)

    Ну, наверное, про циклы там еще не проходили.
  • Германн © (18.03.08 01:58) [23]

    > 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]
    А ведь потом Германн начнет упрекать меня за пьянство....
  • Германн © (18.03.08 02:08) [25]

    > KilkennyCat ©   (18.03.08 01:59) [24]
    >
    > А ведь потом Германн начнет упрекать меня за пьянство...
    > .
    >

    Кончай флудить! Я ещё никого и никогда не упрекал за пьянство без причины.
    Или ты ответил не в ту ветку, в которую хотел? :)
  • KilkennyCat © (18.03.08 02:28) [26]
    Ну вот, я же говорил...
  • Плохиш © (18.03.08 11:11) [27]

    > KilkennyCat ©   (18.03.08 01:59) [24]

    А ты уже прекратил есть маленьких детей?
  • mr1Andersen (24.03.08 23:53) [28]
    Если применить к [12] такой код:
       Lst[1] := Copy(Lst[1], 7, length(Lst[1]));
    то получается, вот это:

    сфере средств разработки
    я объявила о выпус
    ке серии продуктов Delphi

    Как мне удалять ни с первой позиции, а с 12-й?
  • Германн © (25.03.08 00:42) [29]

    > Как мне удалять не с первой позиции, а с 12-й?

    Урок английского.
    "Удалять" - "Delete".
    "Копировать" - "Copy".
  • mr1Andersen (07.04.08 21:03) [30]

    > Германн ©   (25.03.08 00:42) [29]


    Ок, если ты знаешь, напиши одну строчку как удалить через Delete
    Lst[1] := Delete(…
  • Германн © (08.04.08 14:23) [31]

    > Lst[1] := Delete(…

    За две недели ты так и нашел желания посмотреть справку.
  • Virgo_Style © (08.04.08 16:48) [32]
    Германн ©   (08.04.08 14:23) [31]
    справку


    всплывающей подсказки более чем достаточно
  • 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'
  • Германн © (10.04.08 02:00) [34]

    > 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 в выражении.
  • korneley © (10.04.08 02:21) [35]

    > mr1Andersen   (10.04.08 01:42) [33]

    А вот я не понял (тупой просто), чем "сломяк" от "впадлу" оличается? И зачем его ждать две недели? Ежели он сам, по-идее, на первой пришёл.
 
Конференция "Начинающим" » вырезать вставлять [D7, XP]
Есть новые Нет новых   [134435   +35][b:0][p:0.001]