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

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

Считывание строк [D7, XP]


Страницы:   1 2

funky ©   (2006-11-13 09:58:00) 

Привет мастера! Подскажите в чём ошибка.
For i:=0 to resSTR do
begin
readln(CFile,readingstring);
if readingstring[j]='С' then
if readingstring[j+1]='с' then
 if readingstring[j+2]='ы' then
  Memo2.Lines.Add(IntToStr(i)+',');
end;

Мне нужно проверить, если в считываеммой строчке первые 3 символа "Ссы", тогда добавляем номер строчки в мемо2. Спасибо.


Percent   (2006-11-13 10:31:00) [21]

Кхм... используй TStringList


funky   (2006-11-13 10:27:00) [22]

Подумал тут, с while not EOF(CFile) do, проще %)
Но всё равно ошибка остаётся =/


funky   (2006-11-13 10:23:00) [23]

Anatoly Podgoretsky ©   (13.11.06 10:18) [8]
ну так j-то обнуляется, каждый раз.
Единственная ф-ция j, это присваивание ему значения от 0 до 2, для считывание символа из строки. Он по определению не может быть равен больше 2х.
Или я что-то неправельно понял =/

Через F7 глянул, прога считает что
If not length(readingstring) = 0 then
всегда равен 0, и перескакивает =/


Anatoly Podgoretsky   (2006-11-13 10:18:00) [24]

> Jeer  (13.11.2006 10:04:03)  [3]

А если имеет длину 10, но J = 15?


Anatoly Podgoretsky   (2006-11-13 10:17:00) [25]

> funky  (13.11.2006 09:58:00)  [0]

В приведеном коде не видать цикла по J
Допустим он где то выше, но тогда во внутренний цикл совсем не нужен, по причине бессмысленности


funky   (2006-11-13 10:14:00) [26]

Стрвнно, код все строчки считывает как пустые =/

procedure TForm1.Button1Click(Sender: TObject);
begin
GetAllStr; //заносим в resSTR общее кол-во строк.
AssignFile(CFile,'X:\Отчёт.txt');
Reset(CFile);
For i:=0 to resSTR do
begin
j:=0;
readln(CFile,readingstring);
If not length(readingstring) = 0 then

begin
 if readingstring[j]='С' then
  if readingstring[j+1]='с' then
   if readingstring[j+2]='ы' then
    Memo2.Lines.Add(IntToStr(i)+',');
end;

end;
CloseFile(CFile);
end;


funky   (2006-11-13 10:07:00) [27]

Percent   (13.11.06 10:02) [2]
resSTR, это кол-во строк в файле.

Jeer ©   (13.11.06 10:04) [3]
>>3. Где проверка длины прочитанной строки (?) readingstring?
>>2. А если строка очередная строка имеет длину 0 - чего будет с [j] ?
блин, недоглядел, наверно действительно там строка пустая, щас проверку добавлю, и поглядим.

MBo ©   (13.11.06 10:05) [4]
Мне так удобнее %)


MBo   (2006-11-13 10:05:00) [28]

Чтение странно выглядит, а для проверки подстроки - Pos используй


Jeer   (2006-11-13 10:04:00) [29]

1. По файлу так не ходят, есть EOF для этого.
2. А если строка очередная строка имеет длину 0 - чего будет с [j] ?


Percent   (2006-11-13 10:02:00) [30]

1. Что такое resSTR?
2. В момент выполнения этого кода файл CFile гарантированно открыт для чтения?
3. Где проверка длины прочитанной строки (?) readingstring?

Больше вопросов пока нет...


funky   (2006-11-13 09:59:00) [31]

P.S. j: byte; равен 0.


Страницы:   1 2

Наверх

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