Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как спозиционироваться на нужную строку в текстовом файле [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
?


Наверх

Титульная страница Поиск, карта сайта Написать письмо