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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2010, 01:31   #1
west.by
Подтвердите свой е-майл
 
Регистрация: 16.05.2010
Сообщений: 54
По умолчанию исправить программу(архив внутри)

оператор вводит фамилию отдел и день зачисления на работу
мне нужна вывести старожилы-новички
помогите подкорректировать-все сделал-но есть ошибки

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Buttons, StdCtrls, Dateutils;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Memo1: TMemo;
    Memo2: TMemo;
    Memo3: TMemo;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    BitBtn1: TBitBtn;
    OpenDialog1: TOpenDialog;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  f:File of Stud;
  ft:TextFile;
  w:Stud;
  fname,fnamet:String;
  zak:Boolean;

implementation

{$R *.dfm}


procedure TForm1.FormCreate(Sender: TObject);
begin
Memo1.Clear; Memo2.Clear; Memo3.Clear;
 Edit1.Clear; Edit2.Clear; Edit3.Clear;
 Button1.Enabled:=False;
 Label5.Caption:= '';
 zak:=False;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin //// ввод данных из формы и сохранение в файл
   w.fam:=Edit1.Text;
   w.oc[1]:=StrToInt(Edit2.Text);
   w.oc[2]:=StrToInt(Edit3.Text);
   Write(f,w);
   Memo1.Lines.Add(w.fam);
   Memo2.Lines.Add(IntToStr(w.oc[1]));
   Memo3.Lines.Add(IntToStr(w.oc[2]));
   Edit1.Clear; Edit2.Clear; Edit3.Clear;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin  //// создание файла f
  SaveDialog1.Title:='Создать файл';
  SaveDialog1.DefaultExt:='.dat';
  if SaveDialog1.Execute Then
      Begin
        fname:=SaveDialog1.FileName;
        AssignFile(f,fname);
        ReWrite(f);
      End;
  Button1.Enabled:=True;
  zak:=True;
  Label5.Caption:='        Общий список';

end;

procedure TForm1.Button3Click(Sender: TObject);
begin   ///// чтение данных из файла f и вывод их в мemo
OpenDialog1.Title:='Открыть файл';
  if OpenDialog1.Execute Then
    Begin
      fname:=OpenDialog1.FileName;
      AssignFile(f,fname);
      Reset(f);
    End;
Memo1.Clear; Memo2.Clear; Memo3.Clear;
While Not EOF(f) Do
     Begin
       Read(f,w);
       Memo1.Lines.Add(w.fam);
       Memo2.Lines.Add(IntToStr(w.oc[1]));
       Memo3.Lines.Add(IntToStr(w.oc[2]));
end;
   CloseFile(f);
   Label5.Caption:='        Общий список';
end;

procedure TForm1.Button4Click(Sender: TObject);
begin  /// запись результат в файл f
  SaveDialog1.Title:='Сохранить в текстовом файле';
  SaveDialog1.DefaultExt:='.txt';
  if SaveDialog1.Execute Then
    Begin
      fnamet:=SaveDialog1.FileName;
      AssignFile(ft,fnamet);
      ReWrite(ft);
    End;
  WriteLn(ft,'        Общий список работающих');
  WriteLn(ft,'   Фамилия  отдел стаж ');
  Reset(f);
  While Not EOF(f) Do
   Begin
     Read(f,w);
     With w Do
        WriteLn(ft,fam:10,oc[1]:3,oc[2]:8);
   End;
  CloseFile(f);
  CloseFile(ft);

end;

procedure TForm1.Button5Click(Sender: TObject);
var //// сортировка и сохранение в файл
k,m:integer
str1,str2: String;
DateTime1,DateTime2:TdateTime;
Days_: Integer;

begin   // Вывод информации о работниках с наибольшим стажем
Memo1.Clear; Memo2.Clear; Memo3.Clear;
Reset(f);
While Not EOF(f) Do
Begin
 Read(f,w);
str1:='16.05.1955'; //пример даты-время///
str2:='16.05.2010
DateTime1:= StrToDateTime(str1); //- переводит строку, типа 15.05.2010 в переменную типа TdateTime
DateTime2:= StrToDateTime(str2);
   if DateTime1>DateTime2  then ShowMessage(str1+' > '+str2)
 else
  if DateTime1<DateTime2  then ShowMessage(str1+' < '+str2)
  else ShowMessage(str1+' = '+str2);
end;
str1:='16.05.1955';
str2:='15.05.2010';
DateTime1:=StrToDate(str1);
DateTime2:=StrToDate(str2);//StrToDate(str2);
 
 
///рассчитываем количество дней между двумя датами///
  Days_:= DaysBetWeen(DateTime1,DateTime2);
 ShowMessage('между ними '+IntToStr(Days_)+' дней');
 
 {Расчитываем текущую дату}
 DateTime1:=Now;
 
 ShowMessage('сегодня '+DateToStr(DateTime1));
 
 
end;


end.
Вложения
Тип файла: rar файл программа.rar (4.3 Кб, 9 просмотров)

Последний раз редактировалось west.by; 19.05.2010 в 00:44.
west.by вне форума Ответить с цитированием
Старый 18.05.2010, 16:10   #2
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Может всётаки стоить озвучить ошибки? Если честно, то перебирать все процедуры, как то не интересно. Хоть бы комментарии были, где и что должно происходить по замыслу.

Последний раз редактировалось vovk; 18.05.2010 в 16:18.
vovk вне форума Ответить с цитированием
Старый 18.05.2010, 19:01   #3
west.by
Подтвердите свой е-майл
 
Регистрация: 16.05.2010
Сообщений: 54
По умолчанию

Все ошибки можно промониторить в файле программы

помогите мне отредактировать выполнение
Tbutton5-здесь ошибка помогите мне промониторить ошибки- связь между выводом данных из файла и фильтрация по моему алгоритму-здесь идут ошибки.
west.by вне форума Ответить с цитированием
Старый 18.05.2010, 19:44   #4
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Там в архиве в модуле не описан тип ну вроде record должен быть, пары компонентов на форме нет, мож ещё чего нет, перезалей. И желательно чтобы файл заполненный тестовым данными тоже в архиве был.

Честно говоря вообще не понял что там по клику на 5 кнопке происходит..
Присваиваем значения какимто текстовым переменным, потом начинаем бегать по записям до конца файла но нигде эти записи не используем, зато перезаписываем переменные теми же значениями, переводим в другой формат и передаём значения другим переменным, сравниваем, выводим сообщения, непонятно в общем что должно то было происходить?
я так понял запись должна быть такой

Код:
type stud = record
   fam:string[50];
   oc:Array [1..2] of Integer;
   end;
потому что в коде есть
Код:
var
  Form1: TForm1;
....
  w:Stud; 
...

....
   w.fam:=Edit1.Text;
   w.oc[1]:=StrToInt(Edit2.Text);
   w.oc[2]:=StrToInt(Edit3.Text);
...

Последний раз редактировалось vovk; 18.05.2010 в 20:26.
vovk вне форума Ответить с цитированием
Старый 18.05.2010, 23:41   #5
west.by
Подтвердите свой е-майл
 
Регистрация: 16.05.2010
Сообщений: 54
По умолчанию

все очень просто
сначала вводим информацию в файл Txt вида:

роророро/12/ 01,10.2004
рлороллр /11 /01.9.2001
ммимимми/4/01.4.2000
троооррор/5/01.07/1999

сохраняемся.считываем.

конечную. дату берем 01.05.2010 округляем до года

и должно получиться в тимемо следующее

троооррор/5/11
ммимимми/4/10
рлороллр /11 /9
роророро/12/ 6

ЗЫ:вот и вся задача. у меня получается только кривой код.((((((((
west.by вне форума Ответить с цитированием
Старый 19.05.2010, 00:22   #6
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

а почему txt там же типизированый вроде как я понял файл хотелось использовать? и ещё раз только по руссски что значат эти ророро мимиим и прочие.. .. Лучше обьясните что вы хотели сделать?
что за записи должны хранится в каком файле, структуру записи.
В записи должна быть строка число и дата? и вы потом по дате хотите сделать сортировку в файле? или в файле их менять не надо просто вывести в другом порядке, по какому то принципу?
Вот я пишу тут гораздо больше вас, а надо то вам чтоб работало..
Лучше в код что вверху перепишите с коментариями, где и что должно по вашему происходить.

и дату как округляем? 01.05.2010 будет 2009 ?
vovk вне форума Ответить с цитированием
Старый 19.05.2010, 00:35   #7
west.by
Подтвердите свой е-майл
 
Регистрация: 16.05.2010
Сообщений: 54
По умолчанию

Vovk cпасибо вам за внимание!!!!
по делу

-вводим данные
фамилия/число от 1-10/дата ;;;;; вводим в 3 edit(каждое значение в отдельную строку)

- cохранить в txt файл который должнс создать сама прога

- повторяем дейсвие раз 10

- считывем файл

- сортируем по дате от большей к меньшей
пишем в месяцах

- отсортировали-вывели в тимемо
- сохранили результат в файл
- закрыли файл

Последний раз редактировалось west.by; 19.05.2010 в 00:39.
west.by вне форума Ответить с цитированием
Старый 19.05.2010, 09:32   #8
west.by
Подтвердите свой е-майл
 
Регистрация: 16.05.2010
Сообщений: 54
По умолчанию

Прошу помощи господа
west.by вне форума Ответить с цитированием
Старый 19.05.2010, 10:52   #9
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

ненадо паниковать.
Добавил, изменил коечто, чтоб работало заменил edit3 на datetimepicker
на первых 3 кнопках переписал процедуры onClick теперь делает что хотели. Особо не вникал, так что доделывать всё равно надо.
Вложения
Тип файла: rar файл программа.rar (5.1 Кб, 8 просмотров)
vovk вне форума Ответить с цитированием
Старый 19.05.2010, 18:47   #10
west.by
Подтвердите свой е-майл
 
Регистрация: 16.05.2010
Сообщений: 54
По умолчанию

Пока не смотрел-на работе-но все равно спасибо!
west.by вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Требуется написать программу (ТЗ внутри) vxd Фриланс 9 18.04.2010 14:28
Исправить уже написанную программу Shiza321 Помощь студентам 1 27.01.2010 12:49
Помогите исправить программу... Lifefine Общие вопросы C/C++ 1 29.10.2009 11:32
Помоги исправить программу. Lifefine Общие вопросы C/C++ 3 19.10.2009 20:27
Помогите исправить программу kill301 Помощь студентам 1 01.06.2009 16:17