Модераторы: Snowy, MetalFan, bems, Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Файлы в Delphi 
V
    Опции темы
radiokiller
Дата 21.4.2011, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 21.4.2011

Репутация: нет
Всего: нет



Помогите пожалуйста!
Вот такая задача: Сведения об автомобиле состоят из его марки, номера, фамилии владельца и отметки о прохождении техосмотра. Вывести фамилии владельцев и номера автомобилей определенной марки, не прошедших техосмотр.
Получилась вот такая программа
Код
procedure TForm1.Button1Click(Sender: TObject);
Type Zapis=Record
             Fam:String[50];  {фамилия владельца}
             Marka:String[10];  {марка автомобиля}
             NomAvto:String[10];  {номер автомобиля}
             Tehosm:String[5];  {отметка о техосмотре}
             TrebMarka:String[10]; {требуемая марка}
           End;
Var    NameFile:File of Zapis;
          Stroka:Zapis;
          I:Integer;  {параметр цикла}
          N:Integer;  {количество записей}
begin
   N:=StrToInt(EditN.Text);
   AssignFile(NameFile,'file1.dat');
   Rewrite(NameFile);
   For I := 1 To N Do
     Begin
       Stroka.Fam:=StringGrid1.Cells[0,I-1];
       Stroka.Marka:=StringGrid1.Cells[1,I-1];
       Stroka.NomAvto:=StringGrid1.Cells[2,I-1];
       Stroka.Tehosm:=StringGrid1.Cells[3,I-1];
       Write(NameFile,Stroka);
     End;
   CloseFile(NameFile);
end;

procedure TForm1.Button2Click(Sender: TObject);
 Type  Zapis=Record
              Fam:String[50];
              Marka:String[10];
              NomAvto:String[10];
              Tehosm:String[5];
              TrebMarka:String[10];
            End;
Var   NameFile:File of Zapis;
         Stroka:Zapis;
         I:Integer;
         TrebMarka:String[10];
begin
  Stroka.TrebMarka:=EditTrebMarka.Text;
  AssignFile(NameFile,'file1.dat');
  Reset(NameFile);
  I:=0;
  While Not Eof(NameFile) Do
   Begin
     Read(NameFile,Stroka)
     If ((Stroka.Tehosm='нет*') Or (Stroka.Tehosm='Нет*') And (Stroka.Marka=Stroka.TrebMarka))
        Then
           Begin
             StringGrid1.Cells[0,I]:=Stroka.Fam;
             StringGrid1.Cells[1,I]:=Stroka.NomAvto;
             I:=I+1;
           End;
           CloseFile(NameFile);
   End;
end;
end.

Когда запускаю вылазит ошибка 103,не понимаю в чем дело.может что нибудь посоветуете?

PM MAIL   Вверх
~FoX~
Дата 21.4.2011, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 5
Всего: 68



Цитата(radiokiller @  21.4.2011,  21:30 Найти цитируемый пост)
 CloseFile(NameFile);

Вынеси за пределы цикла....
А вообще, давно пора переходить на TFileStream


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
radiokiller
Дата 21.4.2011, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 21.4.2011

Репутация: нет
Всего: нет



ну отсталый я человек!теперь вообще ничего не происходит((программа запускается,жму на button - ноль реакции,даже сообщение об ошибке не выходит!
PM MAIL   Вверх
~FoX~
Дата 21.4.2011, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 5
Всего: 68



1. Вынеси описание типа в глобальную секцию...

Код

Type Zapis=Record
             Fam:String[50];  {фамилия владельца}
             Marka:String[10];  {марка автомобиля}
             NomAvto:String[10];  {номер автомобиля}
             Tehosm:String[5];  {отметка о техосмотре}
             TrebMarka:String[10]; {требуемая марка}
           End;
//...........
procedure TForm1.Button1Click(Sender: TObject);
Var    NameFile:File of Zapis;
          Stroka:Zapis;
          I:Integer;  {параметр цикла}
          N:Integer;  {количество записей}
begin
   N:=StrToInt(EditN.Text);
   AssignFile(NameFile,'file1.dat');
   Rewrite(NameFile);
   For I := 1 To N Do
     Begin
       Stroka.Fam:=StringGrid1.Cells[0,I-1];
       Stroka.Marka:=StringGrid1.Cells[1,I-1];
       Stroka.NomAvto:=StringGrid1.Cells[2,I-1];
       Stroka.Tehosm:=StringGrid1.Cells[3,I-1];
       Write(NameFile,Stroka);
     End;
   CloseFile(NameFile);
end;
//..........
procedure TForm1.Button2Click(Sender: TObject);
Var   NameFile:File of Zapis;
         Stroka:Zapis;
         I:Integer;
         TrebMarka:String[10];
begin
  Stroka.TrebMarka:=EditTrebMarka.Text;
  AssignFile(NameFile,'file1.dat');
  Reset(NameFile);
  I:=0;
  While Not Eof(NameFile) Do
   Begin
     Read(NameFile,Stroka)
     If ((Stroka.Tehosm='нет*') Or (Stroka.Tehosm='Нет*') And (Stroka.Marka=Stroka.TrebMarka))
        Then
           Begin
             StringGrid1.Cells[0,I]:=Stroka.Fam;
             StringGrid1.Cells[1,I]:=Stroka.NomAvto;
             I:=I+1;
           End;
           
   End;
   CloseFile(NameFile);
end;


2. Проверь что условие 
Цитата(radiokiller @  21.4.2011,  21:30 Найти цитируемый пост)
 If ((Stroka.Tehosm='нет*') Or (Stroka.Tehosm='Нет*') And (Stroka.Marka=Stroka.TrebMarka))

отрабатывает правильно....


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
uwannadie
Дата 21.4.2011, 23:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 5.6.2009
Где: Крым, Керчь

Репутация: 1
Всего: 1



а еще было бы неплохо свести запись к такому виду:
Код

Type 
   Zapis=Record
      Fam:String[50];  {фамилия владельца}
      Marka:String[10];  {марка автомобиля}
      NomAvto:String[10];  {номер автомобиля}
      Tehosm:Boolean;  {отметка о техосмотре.  | насколько я знаю ТО может либо быть в наличии либо не быть}
      TrebMarka:String[10]; {требуемая марка}
   End;

и тогда проверка как минимум сокращается до 
Код

If (Stroka.Tehosm = False) And (Stroka.Marka = Stroka.TrebMarka)) then

если же не менять, то условие лучше сделать таким:
Код

If (UpperCase(Stroka.Tehosm)='НЕТ*')  And (Stroka.Marka=Stroka.TrebMarka)
//в RAD студиях UpperCase лучше заменить на AnsiUpperCase

--------------------
PM MAIL   Вверх
radiokiller
Дата 22.4.2011, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 21.4.2011

Репутация: нет
Всего: нет



блин,бесполезно((я в отчаянии!даже и не знаю,что еще попробовать
PM MAIL   Вверх
uwannadie
Дата 22.4.2011, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 5.6.2009
Где: Крым, Керчь

Репутация: 1
Всего: 1



задам пожалуй глупый вопрос: а у тебя есть в файле данные, удовлетворяющие условиям?
и желательно прикрепи проект и файл с данными
--------------------
PM MAIL   Вверх
radiokiller
Дата 22.4.2011, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 21.4.2011

Репутация: нет
Всего: нет



ну да,естественно!может я кокто не так данные в форму ввожу?

Присоединённый файл ( Кол-во скачиваний: 12 )
Присоединённый файл  _________.jpg 35,09 Kb
PM MAIL   Вверх
uwannadie
Дата 22.4.2011, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 5.6.2009
Где: Крым, Керчь

Репутация: 1
Всего: 1



не скриншот, а дпр+пас+дфм+файл с данными
--------------------
PM MAIL   Вверх
radiokiller
Дата 22.4.2011, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 21.4.2011

Репутация: нет
Всего: нет



ну вот они

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  Project2.dpr 0,18 Kb
PM MAIL   Вверх
radiokiller
Дата 22.4.2011, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 21.4.2011

Репутация: нет
Всего: нет



dfm

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  Unit2._dfm 1,20 Kb
PM MAIL   Вверх
radiokiller
Дата 22.4.2011, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 21.4.2011

Репутация: нет
Всего: нет



pas

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  Unit2._pas 2,18 Kb
PM MAIL   Вверх
radiokiller
Дата 22.4.2011, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 21.4.2011

Репутация: нет
Всего: нет



и сам файл

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  file1.dat 0,35 Kb
PM MAIL   Вверх
uwannadie
Дата 22.4.2011, 19:09 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 5.6.2009
Где: Крым, Керчь

Репутация: 1
Всего: 1



Ошибка у тебя глупая
пишешь в файл "нет"
а ищешь "нет*"
прикрепил чутка исправленное

Это сообщение отредактировал(а) uwannadie - 22.4.2011, 19:10

Присоединённый файл ( Кол-во скачиваний: 8 )
Присоединённый файл  test.rar 82,72 Kb
--------------------
PM MAIL   Вверх
radiokiller
Дата 22.4.2011, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 21.4.2011

Репутация: нет
Всего: нет



ааа,супер просто,все работает!спасиииибо огромнейшее,человеческое))только вот,извините за надоедливость,а можно сделать так,чтоб выводились только фамилии и номера,а все остальные ячейки становились пустыми??вот так...

Присоединённый файл ( Кол-во скачиваний: 12 )
Присоединённый файл  __________.png 40,03 Kb
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0848 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.