![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как спозиционироваться на нужную строку в текстовом файле [D7, WinXP]
Igor23 © (2008-01-08 02:37:00)Привет всем! Поможите?
Существует текстовый файл:
vj'hgj12t
mmmШМАТnnnn
jbhgjvhjcTeam1bn
;p[l;l;l;]l
kjncfxklkСАЛО{vb;,b;'v
ifkg;cky
cghk'f['
flk,[oi[g7
'ik[ul;mt;oikmg
]okhj[gl8;'ouk-=]
Нам известна только статичная строка "mmmШМАТnnnn" из этого файла.
Определяю "ШМАТ" следующим образом:
while not Eof(F) do
begin
Readln(F, S);
if S='mmmШМАТnnnn'+ then
begin
s1:='ШМАТ';
i:=Pos(s1,S); //поз начала в подстроке
ShowMessage(S[i]+S[i+1]+S[i+2]);
Showmessage(IntToStr(i));
end;
end;
Как теперь спозиционироваться и работать со строкой "kjncfxklkСАЛО{vb;,b;'v" где только САЛО в данной строке переменное значение, но ещё мы знаем, что эта строка расположена четко ниже(через 2 строки), от строки "mmmШМАТnnnn"
Буду очень и очень признателен за поддержку!
Плохиш (2008-01-08 10:57:00) [1]
> ТЕМА ЗАКРЫТА про TStingList совсем забыл
Ещё один бесполезный велосипед с треугольными колёсами :-))
Igor23 (2008-01-08 10:50:00) [2]ВСЕМ СПАСИБО ТЕМА ЗАКРЫТА про TStingList совсем забыл)))
Igor23 (2008-01-08 10:48:00) [3]
> ganda © (08.01.08 09:07) [10]
спасибо очень помогли
Igor23 (2008-01-08 10:48:00) [4]
> ganda © (08.01.08 09:07) [10]
спасибо очень помогли
Anatoly Podgoretsky (2008-01-08 10:46:00) [5]
> Вызвав Readln(F) 2 раза, ты попросту пропустишь 2 строки.
> Следующий вызов Readln(F, S) должен считать из файла то
> самое САЛО.
Идея опасная, сегодня на две ниже, после завтра на четыре, но это не важно, зачет сдавать завтра.
Loginov Dmitry (2008-01-08 10:28:00) [6]> Так думаю, что:
> 1.Нужно сначала определить позицию строки "mmmШМАТnnnn"
> в файле
> 2.Потом прыгнуть на нужную строку(в данном случае расположенную
> ниже на 2 строки) от строки "mmmШМАТnnnn".
Вызвав Readln(F) 2 раза, ты попросту пропустишь 2 строки. Следующий вызов Readln(F, S) должен считать из файла то самое САЛО.
Igor23 (2008-01-08 10:03:00) [7]
> Pos, Copy, Length - думаю вполне хватит....
да это работа со строками, а мне спозиционироватся нужно на изменяющуюся строку "kjncfxklkСАЛО{vb;,b;'v" в изменяющемся файле txt(номер этой строки меняется), зная что эта строка расположена четко ниже(через 2 строки), от строки "mmmШМАТnnnn".
Так думаю, что:
1.Нужно сначала определить позицию строки "mmmШМАТnnnn" в файле
2.Потом прыгнуть на нужную строку(в данном случае расположенную ниже на 2 строки) от строки "mmmШМАТnnnn".
ganda (2008-01-08 09:07:00) [8]или же обынковенным TStringList и ищи себе через Pos точно будешь знать где находится искоемое слово и на какой строке
{RASkov} (2008-01-08 04:49:00) [9]> [7] Igor23 (08.01.08 03:49)
Раз десять перечитал [0].... код пытался понять.... нифика :(
А вообще здесь пахнет примитивным парсером...
Pos, Copy, Length - думаю вполне хватит....
{RASkov} (2008-01-08 04:04:00) [10]> [5] Igor23 (08.01.08 03:20)
> НЕ ДОПОНЯЛ ЧТО ДОПИСАТЬ
:(
Я тоже вапще ничего недопонял....(
В чем вопрос-то? В [0] я таки видел один вопрос
> Поможите?
И шо??? -Ну поможем, дальше-то что? :)
Igor23 (2008-01-08 03:49:00) [11]Вы не правы! не собираюсь я не у кого код покупать, спасибо сам допишу
Германн (2008-01-08 03:46:00) [12]
> Igor23 (08.01.08 03:20) [5]
>
> НЕ ДОПОНЯЛ ЧТО ДОПИСАТЬ
>
>
Азбуку учат в первом классе. Арифметику во втором.
Готовый код - покупают, вне зависимости от уровня образования!
Примите и прочь!
Igor23 (2008-01-08 03:20:00) [13]НЕ ДОПОНЯЛ ЧТО ДОПИСАТЬ
procedure TForm1.Button1Click(Sender: TObject);
var
F:TextFile;
S, S1: String;
I,k,z: Integer;
begin
AssignFile(F, 'work.txt');
RESET(F);
while not Eof(F) do
begin
Readln(F, S);
if S='mmmШМАТnnnn'+ then
begin
s1:='ШМАТ';
i:=Pos(s1,S); //поз начала в подстроке
ShowMessage(S[i]+S[i+1]+S[i+2]);
Showmessage(IntToStr(i));
end;
end;
CloseFile(F);
end;
Igor23 (2008-01-08 03:16:00) [14]дык номер строки тоже неизвестен(((
Германн (2008-01-08 03:09:00) [15]Для "позиционирования" в текстовом файле на нужную строку надо выполнить ReadLn() (Номер строки -1) раз.
Igor23 (2008-01-08 02:53:00) [16]1. НЕТ не поздно в самый раз
2."kjncfxklkСАЛО{vb;,b;'v"-вернее вся строка меняет свои значения т.к это будут циферки
3.сорри очепятка
if S='mmmШМАТnnnn' then
begin
s1:='ШМАТ';
i:=Pos(s1,S); //поз начала в подстроке
ShowMessage(S[i]+S[i+1]+S[i+2]);
Showmessage(IntToStr(i));
end;
Германн (2008-01-08 02:47:00) [17]
> Как теперь спозиционироваться и работать со строкой "kjncfxklkСАЛО{vb;
> ,b;'v" где только САЛО в данной строке переменное значение,
> но ещё мы знаем, что эта строка расположена четко ниже(через
> 2 строки), от строки "mmmШМАТnnnn"
1. Теперь (т.е. по коду уже поздно).
2. А при чём тут САЛО?
3. А что означает конструкцияif S='mmmШМАТnnnn'+ then
?