Конференция "Начинающим" » вырезать вставлять [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] - это как подпрограмма в данной ветке... т.е. нормально все)
 
Конференция "Начинающим" » вырезать вставлять [D7, XP]
Есть новые Нет новых   [134435   +34][b:0][p:0.001]