![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
подскажите пожалуйста мастера как можно в текстовом файле оставить нужные куски текста? Допустим есть текстовый файл с содежимым:
Саша 47 .... какой-то текст НатаШа 56.... дальше не нужный текст Саша 78.... какой-то текст НатаШа 71..... нужно чтобы осталось Саша 47 .... какой-то текст НатаШа 56.... Саша 78.... какой-то текст НатаШа 71..... т.е. нужно чтобы остались только нужные куски. Саша и Наташа в одной строке не попадаются. Бьюсь ни как не могу додуматься как сделать. Подскажите с примером плиз. Спсибо. |
|
#2
|
||||
|
||||
|
Код:
var
i: Integer;
...
with TStringList.Create do
begin
LoadFromFile('f.txt');
for i:=0 to Count - 1 do
if not ((Pos('САША', AnsiUpperCase(Strings[i])) <> 0) or (Pos('НАТАША', AnsiUpperCase(Strings[i])) <> 0)) then Delete(i);
SaveToFile('f.txt');
Free;
end; |
|
#3
|
|||
|
|||
|
Выдает ошибку
Project Project1.exe raised exception class EStringListError with message 'List index out of bounds (1020)'. Progress stopped. Use Step or Run to continue. Что такое? ![]() |
|
#4
|
||||
|
||||
|
Не знаю почему так получилось
Код:
var
i: Integer;
f: Array of String;
tmp: String;
begin
AssignFile(Input, 'f.txt');
Reset(Input);
while not Eof(Input) do
begin
Readln(Input, tmp);
if (Pos('САША', AnsiUpperCase(tmp)) <> 0) or (Pos('НАТАША', AnsiUpperCase(tmp)) <> 0) then
begin
SetLength(f, Length(f) + 1);
f[High(f)]:=tmp;
end;
end;
CloseFile(Input);
Rewrite(Input);
for i:=0 to Length(f) - 1 do
Writeln(Input, f[i]);
CloseFile(Input);
end; |
|
#5
|
|||
|
|||
|
В файле остается только Саша и Наташа, а как же текст между ними
, нужно чтобы текст между ними тоже оставался... ![]() |
|
#6
|
||||
|
||||
|
Значит я не так понял условие, а что именно должно остаться?
|
|
#7
|
|||
|
|||
|
Вот смотри есть текст в текстовом файле (большом):
сдесь текст который не нужен............ // этот текст не должен попасть в результат Саша №45 //этот текст попадает в результат сдесь текст кторый нужен и должен остаться НаТаша №90 сдесь текст который не нужен............ // этот текст не должен попасть в результат Саша №56 //этот текст попадает в результат сдесь текст кторый нужен и должен остаться НаТаша №78 и.т.д. в результате должно сотаться: Саша №45 //этот текст попадает в результат сдесь текст кторый нужен и должен остаться НаТаша №90 СаШа №56 //этот текст попадает в результат сдесь текст кторый нужен и должен остаться НаТаша №78 вот.. ![]() |
|
#8
|
||||
|
||||
|
То есть от Саши до Наташи надо, от Наташи до Саши не надо?
|
|
#9
|
|||
|
|||
|
ДА
в точку |
|
#10
|
||||
|
||||
|
Код:
var
i: Integer;
F: Array of String;
Tmp: String;
DoCopy: Boolean;
begin
DoCopy:=False;
AssignFile(Input, 'f.txt');
Reset(Input);
while not Eof(Input) do
begin
Readln(Input, Tmp);
if Pos('САША', AnsiUpperCase(Tmp)) <> 0 then
DoCopy:=True;
if DoCopy then
begin
SetLength(F, Length(f) + 1);
F[High(F)]:=Tmp;
end;
if Pos('НАТАША', AnsiUpperCase(Tmp)) <> 0 then
DoCopy:=False;
end;
CloseFile(Input);
Rewrite(Input);
for i:=0 to Length(F) - 1 do
Writeln(Input, F[i]);
CloseFile(Input);
end; |
|
#11
|
|||
|
|||
|
ВСЕ ОТЛИЧНО!!! РАБОТАЕТ!!! СПАСИБО!!! ОГРОМНОЕ СПАСИБО. ТЫ МЕНЯ СПАС...
![]() |
|
#12
|
|||
|
|||
|
И еще вопросик... Подскажите пожалуйста как обрезать в текстовом файле длину строк до одного слова, и в конце оставщегося слова добавить ; И еще одна сложность в начале строки могут начанаться с пробела.
, а мне нужно 1 слово. Например: есть текст: Иван ПетроВ Сергей Коновалов Саша Пупкин и.т.д. а должно остаться: Иван; Сергей; Саша; и.т.д Спасибо |
|
#13
|
|||
|
|||
|
Конструкция типа str = str + ';' добавит в конце точку с запятой.
И попробуй вот так обрезать: Код:
procedure TForm1.Edit1Change(Sender: TObject);
begin
Edit2.Text := TrimLeft(copy(Edit1.Text,0,pos(' ',(Edit1.Text))-1)+ ';');
end;Еще забыл - обрезать пробелы в начале можно командой TrimLeft. Последний раз редактировалось JIexa21, 28.07.2008 в 13:41. |
|
#14
|
|||
|
|||
|
Это конечно хорошо, спасибо за подсказку, только вот как это все применить к текстовому файлику в котором очень много строк?
![]() |
|
#15
|
|||
|
|||
|
Честно говоря я не совсем понял содержимое твоего текстового файла. Сначала у тебя одни условия, потом другие...
Поэтому дал строчку которую я бы сделал у себя при похожих условиях. Или это два разных файла? |
![]() |
|
| Опции темы | Поиск в этой теме |
| Опции просмотра | |
|
|