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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.05.2009, 10:28   #1
SnowFall
Пользователь
 
Регистрация: 13.03.2009
Сообщений: 13
Стрелка Почему данные не сохраняются или не выводятся?

вот код проги, подскажите почему данные не загружаются?

Код:
program Project11;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  StrUtils;

type
  TOtdel=Record
           Freb,Ireb,Oreb,Frod,Irod,Orod: string[30];
           Mrab,Dolzhnost,Ul:string[30];
           Dom,Kv:Integer;
         end;
var
  OtdelList:array[1..1000] of TOtdel;
  N:Integer;

function AddZapis:Boolean;
var
  Zapis:TOtdel;
  Key:Char;
  t:string;
begin
  Result:=False;
  N:=N+1;
  Writeln('dlya dobavleniya zapisi nazhmite [S]');
  Writeln('dlya prodolzheniya nazhmite lubuu klavishu');
  Readln(Key);
  Result:=UpCase(Key)='S';
  if Result
    then begin
           {$I-}
           Repeat
             Writeln('familiya rebenka: ');
             Readln(Zapis.Freb);
           Until(IOResult=0) and (zapis.Freb<>'');
           Repeat
             Writeln('imya rebenka: ');
             Readln(Zapis.Ireb);
           Until(IOResult=0) and (zapis.Ireb<>'');
           Repeat
             Writeln('otchestvo rebenka: ');
             Readln(Zapis.Oreb);
           Until(IOResult=0) and (zapis.Oreb<>'');

           Repeat
             Writeln('familiya roditelya: ');
             Readln(Zapis.Frod);
           Until(IOResult=0) and (zapis.Frod<>'');
           Repeat
             Writeln('imya roditelya: ');
             Readln(Zapis.Irod);
           Until(IOResult=0) and (zapis.Irod<>'');
           Repeat
             Writeln('otchestvo roditelya: ');
             Readln(Zapis.Orod);
           Until(IOResult=0) and (zapis.Orod<>'');

           Repeat
             Writeln('mesto raboti: ');
             Readln(Zapis.Mrab);
           Until(IOResult=0) and (zapis.MRab<>'');
           Repeat
             Writeln('dolzhnost: ');
             Readln(Zapis.Dolzhnost);
           Until(IOResult=0) and (zapis.dolzhnost<>'');
           Repeat
             Writeln('ulica: ');
             Readln(Zapis.ul);
           Until(IOResult=0) and (zapis.Ul<>'');
           Repeat
             Writeln('nomer doma: ');
             Readln(Zapis.Dom);
           Until(IOResult=0);
           Repeat
             Writeln('kvartira: ');
             Readln(Zapis.kv);
           Until(IOResult=0);
           {$I+}
           OtdelList[n]:=Zapis;
           N:=N+1;
         end;
end;

function LoadFromFile:Boolean;
var
  f:file of Totdel;
  i,n:Byte;
begin
  n:=0;
  if Result then
              begin
                AssignFile(f,'stat.dat');
                Reset(f);
                while not eof(f) do
                  begin
                    Inc(i);
                    Read(f,OtdelList[n]);
                  end;
                CloseFile(f);
              end;
end;

function SaveToFile:Boolean;
var
  f:file of TOtdel;
  i:Integer;
begin
  AssignFile(f,'stat.dat');
  {$I-}
  Rewrite(f);
  Result:=IOResult=0;
  {$I+}
  if Result then
    begin
      i:=1;
      while(i<=N) do
      begin
        write(f,OtdelList[i]);
        Inc(i);
      end;
      CloseFile(f);
    end;
end;


Procedure PrintOtdel;
var
  i:Integer;
begin
  Writeln(DupeString('-',80));
  Writeln('N':2,'|','FIO roditelei':15,'|','FIO rebenka':15,'|',
  'MRab':12,'|','Dolzhnost':12,'|','Ul':10,'|','Dom':3,'|','Kv':3);
  Writeln(DupeString('-',80));
  for i:=1 to n do
  with otdellist[i] do
  Begin
    Writeln(i:2,'|',FRod:15,'|',FReb:15,'|',
    MRab:12,'|',Dolzhnost:12,'|',Ul:10,'|',Dom:3,'|',Kv:3);
    Writeln(i:2,'|',IRod:15,'|',IReb:15,'|',
    '':12,'|','':12,'|','':10,'|','':3,'|','':3);
    Writeln(i:2,'|',ORod:15,'|',OReb:15,'|',
    '':12,'|','':12,'|','':10,'|','':3,'|','':3);
  end;
  WriteLn(DupeString('-',80));
end;

Var
  Nomer:Integer;

begin
  n:=0;
  Repeat
    {$I-}
    Repeat
      WriteLn('[1]. Zagruzit');
      WriteLn('[2]. Prosmotret');
      WriteLn('[3]. Dobavit');
      WriteLn('[4]. Sohranit');
      WriteLn('[5]. Exit');
      ReadLn(Nomer);
    Until (IOResult=0)and(Nomer>=1)and(Nomer<=5);
    {$I+}
    Case nomer of
      1: if not LoadFromFile then WriteLn('Error');
      2: PrintOtdel;
      3: if not AddZapis then WriteLn('Error');
      4: if not SaveToFile then WriteLn('Error');
    end;
  Until Nomer=5;
  WriteLn('Press [Enter to exit]');
  ReadLn;
  { TODO -oUser -cConsole Main : Insert code here }
end.
SnowFall вне форума Ответить с цитированием
Старый 10.05.2009, 10:57   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

WinCRT в раздел uses, помоему это где-то даже в хелпе есть.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 10.05.2009, 18:09   #3
SnowFall
Пользователь
 
Регистрация: 13.03.2009
Сообщений: 13
По умолчанию

не понял =(

ну подскажите что сделать=( и исправьте ошибки которые найдёте

Последний раз редактировалось Stilet; 12.05.2009 в 10:54.
SnowFall вне форума Ответить с цитированием
Старый 11.05.2009, 17:55   #4
Anatole
Форумчанин
 
Аватар для Anatole
 
Регистрация: 07.04.2009
Сообщений: 245
По умолчанию

Код:
unction LoadFromFile:Boolean;
var
  f:file of Totdel;
  i,n:Byte;
begin
  n:=0;
  if Result then
              begin
                AssignFile(f,'stat.dat');
                Reset(f);
                while not eof(f) do
                  begin
                    Inc(i);
                    Read(f,OtdelList[n]);
                  end;
                CloseFile(f);
              end;
end;
Читаеш ты в переменную с индексом n (Read(f,OtdelList[n]) а увеличиваеш счетчик по i (Inc(i), а должно быть Inc(n);
Всякое безобразие должно быть единообразным. Тогда это называется порядком.
Anatole вне форума Ответить с цитированием
Старый 12.05.2009, 01:21   #5
SnowFall
Пользователь
 
Регистрация: 13.03.2009
Сообщений: 13
По умолчанию

спасибо вам
SnowFall вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Введенные данные в DBGridEh не сохраняются prorock БД в Delphi 11 21.04.2011 14:35
Создение поля со списком. Не сохраняются данные. Olyachir Microsoft Office Access 1 02.05.2009 15:44
Шаблон или часто менять данные Deil Microsoft Office Word 1 30.04.2009 10:43
Слишком долго сохраняются данные в БД Maxs Помощь студентам 5 27.04.2009 14:45
почему измененные данные не отображаэтся в дбгриде doncova1 БД в Delphi 12 04.02.2007 15:46