![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
вырезать вставлять [D7, XP]
mr1Andersen © (2008-03-17 23:48:00)Есть такой код:
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-это первая)
Вопрос: Как вырезать и как вставлять?
mr1Andersen (2008-03-18 01:51:00) [21]Это к примеру (mr1Andersen (18.03.08 01:39) [12])
Суть вопроса ни меняется
KilkennyCat (2008-03-18 01:50:00) [22]> [14] {RASkov} © (18.03.08 01:46)
ты ж его зациклил бесконечно, не указав условие выхода :)
{RASkov} (2008-03-18 01:46:00) [23]> [12] mr1Andersen (18.03.08 01:39)
Читай ветку с начала)
KilkennyCat (2008-03-18 01:42:00) [24]отлично.
mr1Andersen (2008-03-18 01:39:00) [25]чтобы было понятнее:
есть S2.TXT, в котором есть текст:
сфере средств разработки
сегодня объявила о выпус
ке серии продуктов Delphi
нужно по нажатию на Button3, иметь в S2.TXT, такой текст:
сфере средств разработки
сегодня объя выпус
ке серии продуктов Delphi
При этом на перед ни известно какой текст записан в S2.TXT
Нужно просто удалить с текста пару букв с конкретной (заданной) позиции.
{RASkov} (2008-03-18 01:32:00) [26]> P.S. Хотя "вырезание" - это Copy+Delete.
Если "вырезание" без последующего "вставления", что помоему и нужно автору, то достаточно System.Delete() :)
> [0] mr1Andersen (17.03.08 23:48)
Изучай Copy, Insert, Delete + F1. Все их уже здесь озвучили. Так же есть стандартный модуль StrUtils.pas и не стандартных полно, например RxStrUtils - для работы со строками.... много интересного найдешь в них.
KilkennyCat (2008-03-18 01:31:00) [27]> [5] Германн © (18.03.08 01:23)
хм... а я и непомню уже... в принципе, через копи тоже можно че угодно сотворить :)
KilkennyCat (2008-03-18 01:30:00) [28]О, это очень сложно...
Lst[24] := Copy(Lst[24], 110, 9) + Copy(Lst[24], 120, length(Lst[24]) - 120); (точность +-1 символ, сами думайте, и проверку делайте).
Lst.SaveToFile('S2.TXT');
а вот как закрыть неоткрытое - не знаю.
А вообще, формулируйте хотя бы задачу точнее, мож у вас там и нет 119 символов, мож только 111 и остальные 8 с другой строки должны удаляться... и че непонятного было в предыдущих ответах? Или в справке?
Германн (2008-03-18 01:28:00) [29]
> потом закрыть и сохранить S2.TXT
О! А тут ещё и это. Тогда читать книжки и конспекты. (Последние можно одолжить у товарищей, если хоть кто-то из них посещал занятия).
mr1Andersen (2008-03-18 01:27:00) [30]Это понятно, но как мне применить Insert и Delete к конкретной позиции
Германн (2008-03-18 01:25:00) [31]
> mr1Andersen (18.03.08 01:21) [4]
>
> Ну и как мне например с 25 строчки 110 символа вырезать
> 9 символов, потом закрыть и сохранить S2.TXT
>
Сначала позаботься о грамматике в вопросе. А то непонятно что, откуда и скоко отрезать.
Германн (2008-03-18 01:23:00) [32]
> KilkennyCat © (18.03.08 01:12) [3]
>
> да, учитывая многострочность
А если "не учитывая многострочность", то есть тоже самое по написанию. Insert и Delete. Токо это уже не методы TSringList, а процедуры из модуля System.
P.S. Хотя "вырезание" - это Copy+Delete.
mr1Andersen (2008-03-18 01:21:00) [33]Ну и как мне например с 25 строчки 110 символа вырезать 9 символов, потом закрыть и сохранить S2.TXT
KilkennyCat (2008-03-18 01:12:00) [34]да, учитывая многострочность, надеюсь, это не имелось ввиду? если имелось, то Tstringlist имеет procedure Insert(Index: Integer; const S: string) procedure Delete(Index: Integer) ;
KilkennyCat (2008-03-18 01:05:00) [35]хотя нет, не пойдет. точнее, может лишнего наделать.
проще всего:
вырезание:
Snew := Copy(Sold, 1, 3) + Copy(Sold, 5, 4);
вставляние:
Snew := Copy(Sold, 1, 3) + 'tralala' + Copy(Sold, 3, 8);
последнее количество можно определить автоматически, используя Length()
KilkennyCat (2008-03-18 01:01:00) [36]AnsiStringReplace или как-то похоже звучит.