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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.03.2010, 16:17   #1
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
Восклицание База данных

Здравствуйте нужна ваша помощь начинающему программисту.Нашёл у вас на сайте исходник простой базы данных изучая её переделываю под себя.
Вот исходники:
Код:
Uses crt;
   Type
      pSp=^Spisok;
      Spisok=Record
      FIO:String[20];
      Fakultet:String[10];
      Spets:string[10];
      Nom:Byte;
      P:pSp;
   End;
      FN=File of Spisok;
      Var
         T:FN;
         Sp:pSp;
         A,D,N,i:Byte;
         S:Spisok;
         Key,Dl:String[10];
         z:Char;
Procedure Zapis(Var T:FN);
   Begin
      Writeln;
      Write('‚ўҐ¤ЁвҐ Є®«ЁзҐбвў® §*ЇЁбҐ©: ');
      Readln(N);
            For i:=1 to N do
               With S do
                  Begin
                     Writeln;
                     Write('        ‚ўҐ¤ЁвҐ *®¬Ґа §*ЇЁбЁ: ');
                     Readln(Nom);
                     Write('        ‚ўҐ¤ЁвҐ ”€Ћ бв㤥*в*: ');
                     Readln(FIO);
                     Write('  ‚ўҐ¤ЁвҐ д*Єг«мвҐв бв㤥*в*: ');
                     Readln(Fakultet);
                     Write(' ‚ўҐ¤ЁвҐ *®¬Ґа бЇҐжЁ*«м*®бвЁ: ');
                     Readln(Spets);
                     Write(T,S);

                  End;

      ClrScr;
End;
begin

Assign(T,'E:\Din_Spis.Dat');
rewrite(t);
Zapis(T);
end.
Здесь простая запись в файл.Но проблема в том что при вводе одинаковых данных он не добавляет их в файл а заменяет те данные которые были введены сначала.

вот вторая часть:

http://depositfiles.com/files/88fm3jdwq

В ней он не сортирует данные по номеру,и не добавляет данные в созданный при помощи 1-й программы файл.


Если не трудно объясните пожалуйста.
Вложения
Тип файла: rar 1.rar (1.2 Кб, 7 просмотров)
にんじゃ

Последний раз редактировалось ROMA2PVT; 17.03.2010 в 19:04. Причина: не правильно оформил
ROMA2PVT вне форума Ответить с цитированием
Старый 17.03.2010, 18:01   #2
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Что бы добавить запись в файл, нужно передвинуть указатель на конец файла.
Перед записью (Write(T,S);) добавь:
Код:
Seek(FileSize(T));
psycho-coder вне форума Ответить с цитированием
Старый 17.03.2010, 18:58   #3
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
По умолчанию

Записал так:
Код:
Seek(T,FileSize(T));
иначе выдаёт 112 ошибку. Но проблема не решена. Всё равно заменяет одинаковые данные,Если ввести у 2-х человек одинаковые данные-например одинаковую специальность и факультет.
にんじゃ
ROMA2PVT вне форума Ответить с цитированием
Старый 17.03.2010, 20:38   #4
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Цитата:
Код:
rewrite(t);
ReWrite() - открывает файл на запись, если файл уже существует, то он перезаписывается.
тут тебе нужно через Reset(T);
psycho-coder вне форума Ответить с цитированием
Старый 17.03.2010, 20:59   #5
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
По умолчанию

Код:
Rewrite
открывает новый пустой файл для записи в него.У меня так написано.
にんじゃ

Последний раз редактировалось ROMA2PVT; 17.03.2010 в 20:59. Причина: не верно
ROMA2PVT вне форума Ответить с цитированием
Старый 17.03.2010, 23:10   #6
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
По умолчанию

Как в программе:
Код:
Uses crt;
   Type
      pSp=^Spisok;
      Spisok=Record
      FIO:String[20];
      Fakultet:String[10];
      Spets:string[10];
      Nom:Byte;
      P:pSp;
   End;
      FN=File of Spisok;
      Var
         T:FN;
         Sp:pSp;
         A,D,N,i:Byte;
         S:Spisok;
         Key,Dl:String[10];
         z:Char;
Procedure Shapka;
   Begin
      Writeln('ЙНННННННЛННННННННННННННННННННННЛНННННННННННЛННННННННННННННН»');
      Writeln('є ЌЋЊ…ђ є     ”ЂЊ€‹€џ  €Њџ     є ”ЂЉ“‹њ’…’ є ‘Џ…–€Ђ‹њЌЋ‘’њ є');
      Writeln('є  Ї/Ї  є       Ћ’—…‘’‚Ћ       є           є   (жЁда*¬Ё)   є');
      Writeln('МНННННННОННННННННННННННННННННННОНННННННННННОННННННННННННННН№');
   End;

Procedure Sort(Var Z:Spisok);
   Var
      Now,Next,Pr:pSp;
   Begin
      Next:=Sp;
      Pr:=Nil;
      New(Now);
      Now^:=Z;
         While (Next<>Nil) and (Now^.Spets>Next^.Spets) do
            Begin
               Pr:=Next;
               Next:=Next^.P;
            End;
               If Now^.Spets<Next^.Spets then
                  Now^.P:=Next;
                     If Pr=Nil then
                        Sp:=Now
                           Else
                              Pr^.P:=Now;
   End;
Procedure Chtenie(Var F:FN);
   Begin
      {$I-}
      Reset(F);
      {$I+}
         If IOResult<>0 then
            Begin
               Writeln('”*©« *Ґ **©¤Ґ*!');
               ReadKey;
               Halt;
            End;
               Shapka;
                  While not Eof(F) do
                     With S do
                        Begin
                           Read(F,S);
                           Sort(S);
                           Write('є ',Nom:5,' є ');
                           Write(FIO:20,' є ');
                           Write(Fakultet:9,' є ');
                           Write(Spets:13,' є');
                           Writeln;
                        End;
                           Writeln ('ИНННННННКННННННННННННННННННННННКНННННННННННКНННННННННННННННј');
      Close(F);
   End;
Procedure Vivod;
   Var
      Next:pSp;
   Begin
      Shapka;
         Next:=Sp;
            While Next<>Nil do
               Begin
                  Write('є ',Next^.Nom:5,' є ');
                  Write(Next^.FIO:20,' є ');
                  Write(Next^.Fakultet:9,' є ');
                  Write(Next^.Spets:13,' є');
                  Writeln;
                     Next:=Next^.P;
               End;
                  Writeln ('ИНННННННКННННННННННННННННННННННКНННННННННННКНННННННННННННННј');
   End;
Procedure Dopolnenie;
   Begin
      Write(' ‚ўҐ¤ЁвҐ Є®«ЁзҐбвў® ¤®Ў*ў«пҐ¬ле §*ЇЁбҐ©: ');
      Readln(N);
         For i:=1 to N do
            With S do
               Begin
                  Writeln;
                  Write('        ‚ўҐ¤ЁвҐ *®¬Ґа §*ЇЁбЁ: ');
                  Readln(Nom);
                  Write('        ‚ўҐ¤ЁвҐ ”€Ћ бв㤥*в*: ');
                  Readln(FIO);
                  Write('  ‚ўҐ¤ЁвҐ д*Єг«мвҐв бв㤥*в*: ');
                  Readln(Fakultet);
                  Write(' ‚ўҐ¤ЁвҐ *®¬Ґа бЇҐжЁ*«м*®бвЁ: ');
                  Readln(Spets);
                     Sort(S);
                End;
   End;
            Begin
   ClrScr;
      Assign(T,'E:\Din_Spis.Dat');
         Writeln('Ќ*¦¬ЁвҐ <Enter>, зв®Ўл ўўҐбвЁ бў®Ё ¤***лҐ.');
         Writeln('Ќ*¦¬ЁвҐ <Esc>, зв®Ўл ўўҐбвЁ ¤***лҐ Ё§ д*©«* Din_Spis.dat');
            D:=Ord(ReadKey);
               If D=13 then

                  Chtenie(T);
Clrscr;
      Writeln('Џ®«*л© бЇЁб®Є:');
           Vivod;
            Writeln('„«п ¤®Ў*ў«Ґ*Ёп ¤***ле **¦¬ЁвҐ <Enter>.');
            Writeln('„«п ўл室* **¦¬ЁвҐ «оЎго Є«*ўЁиг.');
            D:=Ord(ReadKey);
               If D=13 then
                  Dopolnenie;
                      Writeln;
                         Writeln;
                         Clrscr;
                         Vivod;
                         {readkey;}
                               ReadKey;
End.
Выше выложенный архив 1.rar сделать дозапись данных в 1-ю прогу? Процедура Append не работает почемуто.
にんじゃ
ROMA2PVT вне форума Ответить с цитированием
Старый 19.03.2010, 21:44   #7
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
По умолчанию

Ну ребят помогите же кто нибудь.
にんじゃ
ROMA2PVT вне форума Ответить с цитированием
Старый 20.03.2010, 13:22   #8
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Цитата:
Код:
Procedure Dopolnenie;
   Begin
      Write(' ‚ўҐ¤ЁвҐ Є®«ЁзҐбвў® ¤®Ў*ў«пҐ¬ле §*ЇЁбҐ©: ');
      Readln(N);
         For i:=1 to N do
            With S do
               Begin
                  Writeln;
                  Write('        ‚ўҐ¤ЁвҐ *®¬Ґа §*ЇЁбЁ: ');
                  Readln(Nom);
                  Write('        ‚ўҐ¤ЁвҐ ”€Ћ бв㤥*в*: ');
                  Readln(FIO);
                  Write('  ‚ўҐ¤ЁвҐ д*Єг«мвҐв бв㤥*в*: ');
                  Readln(Fakultet);
                  Write(' ‚ўҐ¤ЁвҐ *®¬Ґа бЇҐжЁ*«м*®бвЁ: ');
                  Readln(Spets);
                     Sort(S);
                End;
   End;
            Begin
   ClrScr;
      Assign(T,'E:\Din_Spis.Dat');
         Writeln('Ќ*¦¬ЁвҐ <Enter>, зв®Ўл ўўҐбвЁ бў®Ё ¤***лҐ.');
         Writeln('Ќ*¦¬ЁвҐ <Esc>, зв®Ўл ўўҐбвЁ ¤***лҐ Ё§ д*©«* Din_Spis.dat');
            D:=Ord(ReadKey);
               If D=13 then

                  Chtenie(T);
Clrscr;
      Writeln('Џ®«*л© бЇЁб®Є:');
           Vivod;
            Writeln('„«п ¤®Ў*ў«Ґ*Ёп ¤***ле **¦¬ЁвҐ <Enter>.');
            Writeln('„«п ўл室* **¦¬ЁвҐ «оЎго Є«*ўЁиг.');
            D:=Ord(ReadKey);
               If D=13 then
                  Dopolnenie;
                      Writeln;
                         Writeln;
                         Clrscr;
                         Vivod;
                         {readkey;}
                               ReadKey;
End.
Ты в процедуре Chtenie открываешь файл, потом закрываешь его и нигде больше не открываешь! А для дополнения нужно открыть файл, перейти в конец и записать данные. И сортировку нужно делать с открытым файлом!
Прикрепляю свою "БД"
Вложения
Тип файла: rar rec.rar (1.3 Кб, 10 просмотров)
psycho-coder вне форума Ответить с цитированием
Старый 20.03.2010, 16:12   #9
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
По умолчанию

я попробую переделать эту.Т.К. ваша слишком сложная для меня.Если чтото psycho-coder поможете?
にんじゃ
ROMA2PVT вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
База данных Bariy47 Фриланс 13 22.02.2010 22:18
База данных с возможностью приема данных из файлов Excel Al_Sha БД в Delphi 6 16.10.2009 15:34
С++. База Данных redevil Помощь студентам 3 08.07.2009 22:23
! База данных ! LordNighton Microsoft Office Excel 1 20.11.2008 22:25