Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.04.2013, 00:14   #1
Solidera
Пользователь
 
Регистрация: 26.03.2013
Сообщений: 14
По умолчанию Поиск элемента в типизированном файле

Поставлена задача - создать типизированный файл из n псевдослучайных символов от "А" до "Я" (или считать элементы из текстового файла), без переписывания в массив найти в файле первый символ "Д" или "Е" и найденный поменять местами с первым элементом.

Насколько я понимаю, для замены необходимо найти номер обнаруженного символа "Д" (или "Е", какой первый попадётся). Но в качестве номера у меня вылазит какое-то дикое число, абсолютно не соответствующее даже общему количеству элементов.

Кусок кода, вызывающий вопросы:
Код:
procedure TForm1.Button4Click(Sender: TObject);
var
  f: file of Char;
  n,i: integer;
  r: Char;
  flag:Boolean;
begin
  AssignFile(f, Edit1.Text);
  try
    Reset(f);
      try
        flag:=False;
        while not Eof(f) and not flag do
        begin
          read(f,r);
          if r in ['Д','Е'] then flag:=True;
          inc(i);
        end;
        Label3.Caption:=Label3.Caption+inttostr(i);
      finally
        CloseFile(f);
      end;
  except
    ShowMessage('Не удалось открыть типизированный файл '+ Edit1.Text);
  end;
end;
Буду благодарна за любой совет.
Изображения
Тип файла: jpg Безымянный.jpg (26.4 Кб, 118 просмотров)
Solidera вне форума Ответить с цитированием
Старый 13.04.2013, 00:36   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

забыли проиницилизировать i (нолик присвоить счётчику)
Код:
begin
  i := 0;
  AssignFile(f, Edit1.Text);
  try
    Reset(f);
...
ну и Д и Е могут вообще отсутствовать, поэтому лучше
Код:
        flag:=False;
        while not Eof(f) and not flag do
        begin
          read(f,r);
          if r in ['Д','Е'] then flag:=True
          else 
            inc(i);
        end;
        if flag then
           Label3.Caption:='Позиция символа ' + r +' = ' + inttostr(i)
        else
           Label3.Caption:= 'Не найден ни один из символов!';

Последний раз редактировалось Serge_Bliznykov; 13.04.2013 в 00:40.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Структура в типизированном файле (Паскаль) Jetbalance Помощь студентам 4 01.07.2012 12:16
Поиск элемента в файле Максикок Помощь студентам 0 24.05.2011 23:16
Сортировка в типизированном файле в Delphi Neroaz Помощь студентам 2 08.04.2010 00:44
Сортировка записей в типизированном файле Faina Помощь студентам 2 26.03.2010 17:28
сохранение инфо в типизированном файле prostac Помощь студентам 2 23.11.2009 14:55