Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.02.03;
Скачать: CL | DM;

Вниз

Как спозиционироваться на нужную строку в текстовом файле   Найти похожие ветки 

 
Igor23   (2008-01-08 02:37) [0]

Привет всем! Поможите?

Существует текстовый файл:
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 02:47) [1]


> Как теперь спозиционироваться и работать со строкой "kjncfxklkСАЛО{vb;
> ,b;"v" где только САЛО в данной строке переменное значение,
>  но ещё мы знаем, что эта строка расположена четко ниже(через
> 2 строки), от строки "mmmШМАТnnnn"

1. Теперь (т.е. по коду уже поздно).
2. А при чём тут САЛО?
3. А что означает конструкция if S="mmmШМАТnnnn"+ then
?


 
Igor23   (2008-01-08 02:53) [2]

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 03:09) [3]

Для "позиционирования" в текстовом файле на нужную строку надо выполнить ReadLn() (Номер строки -1) раз.


 
Igor23   (2008-01-08 03:16) [4]

дык номер строки тоже неизвестен(((


 
Igor23   (2008-01-08 03:20) [5]

НЕ ДОПОНЯЛ ЧТО ДОПИСАТЬ

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;


 
Германн ©   (2008-01-08 03:46) [6]


> Igor23   (08.01.08 03:20) [5]
>
> НЕ ДОПОНЯЛ ЧТО ДОПИСАТЬ
>
>

Азбуку учат в первом классе. Арифметику во втором.

Готовый код - покупают, вне зависимости от уровня образования!
Примите и прочь!


 
Igor23   (2008-01-08 03:49) [7]

Вы не правы! не собираюсь я не у кого код покупать, спасибо сам допишу


 
{RASkov} ©   (2008-01-08 04:04) [8]

> [5] Igor23   (08.01.08 03:20)
> НЕ ДОПОНЯЛ ЧТО ДОПИСАТЬ

:(
Я тоже вапще ничего недопонял....(
В чем вопрос-то? В [0] я таки видел один вопрос

> Поможите?

И шо??? -Ну поможем, дальше-то что? :)


 
{RASkov} ©   (2008-01-08 04:49) [9]

> [7] Igor23   (08.01.08 03:49)

Раз десять перечитал [0].... код пытался понять.... нифика :(
А вообще здесь пахнет примитивным парсером...
Pos, Copy, Length - думаю вполне хватит....


 
ganda ©   (2008-01-08 09:07) [10]

или же обынковенным TStringList и ищи себе через Pos точно будешь знать где находится искоемое слово и на какой строке


 
Igor23   (2008-01-08 10:03) [11]


> Pos, Copy, Length - думаю вполне хватит....


да это работа со строками, а мне спозиционироватся нужно на изменяющуюся строку "kjncfxklkСАЛО{vb;,b;"v" в изменяющемся файле txt(номер этой строки меняется), зная что эта строка расположена четко ниже(через 2 строки), от строки "mmmШМАТnnnn".
Так думаю, что:
1.Нужно сначала определить позицию строки "mmmШМАТnnnn" в файле
2.Потом прыгнуть на нужную строку(в данном случае расположенную ниже на 2 строки) от строки "mmmШМАТnnnn".


 
Loginov Dmitry ©   (2008-01-08 10:28) [12]

> Так думаю, что:
> 1.Нужно сначала определить позицию строки "mmmШМАТnnnn"
> в файле
> 2.Потом прыгнуть на нужную строку(в данном случае расположенную
> ниже на 2 строки) от строки "mmmШМАТnnnn".


Вызвав Readln(F) 2 раза, ты попросту пропустишь 2 строки. Следующий вызов Readln(F, S) должен считать из файла то самое САЛО.


 
Anatoly Podgoretsky ©   (2008-01-08 10:46) [13]


> Вызвав Readln(F) 2 раза, ты попросту пропустишь 2 строки.
>  Следующий вызов Readln(F, S) должен считать из файла то
> самое САЛО.

Идея опасная, сегодня на две ниже, после завтра на четыре, но это не важно, зачет сдавать завтра.


 
Igor23   (2008-01-08 10:48) [14]


> ganda ©   (08.01.08 09:07) [10]


спасибо  очень помогли


 
Igor23   (2008-01-08 10:48) [15]


> ganda ©   (08.01.08 09:07) [10]


спасибо  очень помогли


 
Igor23   (2008-01-08 10:50) [16]

ВСЕМ СПАСИБО ТЕМА ЗАКРЫТА про TStingList  совсем забыл)))


 
Плохиш ©   (2008-01-08 10:57) [17]


> ТЕМА ЗАКРЫТА про TStingList  совсем забыл

Ещё один бесполезный велосипед с треугольными колёсами :-))



Страницы: 1 вся ветка

Текущий архив: 2008.02.03;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.021 c
2-1199798648
AntonUSAnoV
2008-01-08 16:24
2008.02.03
Помогите!


15-1198607831
vrem_
2007-12-25 21:37
2008.02.03
Что планируете на следующий год?


2-1199472258
Васька
2008-01-04 21:44
2008.02.03
Получить все элементы с контролла


2-1199956854
em240
2008-01-10 12:20
2008.02.03
Вызов DataModule из DLL.


6-1179421883
maker
2007-05-17 21:11
2008.02.03
Запросы принимаемые CGI