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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нахождение бага в "СУБД", один из readln() пропускается... 
:(
    Опции темы
VingradFan
Дата 22.5.2007, 00:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 477
Регистрация: 30.1.2006
Где: Москва

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



Код

uses crt;
   type student=record
   fio:string[10];
   crs:byte
end;
type students=array[1..100] of student;
{----------------------------------------------------------------------------}
procedure fill_in(var school:students);
var student:integer;
begin
   write('Fill in the number of the student: ');
   read(student);
   with school[student] do
      begin
         write('Fill in the FIO of ',student,' student: ');
         readln(fio);
         write('Fill in the Cource of ',student,' student: ');
         readln(crs);
         writeln;
         write('Information has been adden sucessfully!');
         repeat until keypressed;
         clrscr
      end;
   writeln;
end;
{----------------------------------------------------------------------------}
procedure print(var school:students);
var student:integer;
begin
   write('Fill in the number of the student: ');
   read(student);
   with school[student] do
      begin
         writeln('The FIO of the ',student,' student is ',fio);
         writeln('The Cource of the ',student,' student is ',crs);
         repeat until keypressed;
         clrscr
      end
end;
{----------------------------------------------------------------------------}
procedure menu;
var value,student:integer;
school:students;
begin
   value:=3;
   repeat
   begin
      writeln('To fill in the information about student type "1" ');
      writeln('To print the information about student type "2" ');
      writeln('To clear the screen type "3" ');
      write('>>>  ');
      readln(value);
      case value of
         1: begin
               writeln;
               fill_in(school);
            end;
         2: begin
               writeln;
               print(school)
            end;
         3: clrscr;
   end;
end
until value=0
end;
{----------------------------------------------------------------------------}
var school:students;
begin
   menu;
end.


проблема такова:
в процедуре FILL_IN в один из элементов массива (состоящего из записей каждого студента) STUDENTS заносится ФИО и курс студента...
так вот оператор ввода ФИО пропускается...
наверно я не знаю какогото теоретического факта на тему...
проясните ситуацию пожалуйста

Это сообщение отредактировал(а) VingradFan - 22.5.2007, 01:03


--------------------
Когда-нибудь я стану богатым и куплю себе столько Ролтонов, сколько захочу...
PM MAIL WWW ICQ   Вверх
Misha_White
Дата 22.5.2007, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



VingradFan, 
Цитата(VingradFan @  22.5.2007,  07:56 Найти цитируемый пост)
repeat until keypressed;

В место этого пиши просто Readln;
А там я не знаю... Ваще прикол, он даже просто строку не хочет... 
 smile  Ты приколист!!! я понял... У тебя же Student=record и Student:integer... smile 
--------------------
Я не волшебник... я только учусь...  
PM MAIL ICQ Skype   Вверх
ama_kid
Дата 22.5.2007, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

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



В этой процедуре исправь:
Цитата
readln(student);

Цитата
наверно я не знаю какогото теоретического факта на тему...
Читаем хелп по Read;
Цитата
With a type string variable:

Read reads all characters up to, but not including, the next end-of-line marker or until Eof(F) becomes true; it does not skip to the next line after reading. If the resulting string is longer than the maximum length of the string variable, it is truncated.
    After the first Read, each subsequent Read sees the end-of-line marker and returns a zero-length string.
    Use multiple Readln calls to read successive string values.



--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
Misha_White
Дата 22.5.2007, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



ama_kid, 
 smile 
--------------------
Я не волшебник... я только учусь...  
PM MAIL ICQ Skype   Вверх
VingradFan
Дата 22.5.2007, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 477
Регистрация: 30.1.2006
Где: Москва

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



Цитата(ama_kid @  22.5.2007,  09:05 Найти цитируемый пост)
В этой процедуре исправь:

Цитата
readln(student);

спасибо большое...все работает, только так и не понял суть...
почему второй read не возвратил zero-length string ?


--------------------
Когда-нибудь я стану богатым и куплю себе столько Ролтонов, сколько захочу...
PM MAIL WWW ICQ   Вверх
VingradFan
Дата 22.5.2007, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 477
Регистрация: 30.1.2006
Где: Москва

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



Кстати довел по чекпойнта программу smile 
кому интересно зацените, прокоментируйте
многих нужных функций нет, но все еще впереди

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  SDBC.rar 4,75 Kb


--------------------
Когда-нибудь я стану богатым и куплю себе столько Ролтонов, сколько захочу...
PM MAIL WWW ICQ   Вверх
KuZyagroup
Дата 23.5.2007, 03:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


magento solution
**


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

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



 smile 
Я бы советовал для СУБД использовать связные списки - красивее и ближе по смыслу БД.
П.С. Не удержался
PM MAIL   Вверх
ama_kid
Дата 23.5.2007, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

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



Цитата(VingradFan @  22.5.2007,  15:51 Найти цитируемый пост)
почему второй read не возвратил zero-length string ?
Твоя команда read(student); заносит в переменную строку, оставляя в буфере символ конца ввода, следующая за ней команда readln(fio); считывает этот символ из буфера ввода и возвращает пустую строку в переменную fio (ибо ввод в этой команде идет именно до символа конца ввода)... Как проще объяснить - не знаю...


--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
VingradFan
Дата 23.5.2007, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 477
Регистрация: 30.1.2006
Где: Москва

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



Цитата(KuZyagroup @  23.5.2007,  03:02 Найти цитируемый пост)
Я бы советовал для СУБД использовать связные списки

почитаю про это

Цитата(ama_kid @  23.5.2007,  09:00 Найти цитируемый пост)
 Как проще объяснить - не знаю...

спасибо, теперь понял smile 

Это сообщение отредактировал(а) VingradFan - 23.5.2007, 18:36


--------------------
Когда-нибудь я стану богатым и куплю себе столько Ролтонов, сколько захочу...
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

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

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

2. Публиковать ссылки на варез

3. Оффтопить

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

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

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


 




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


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

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