Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 30.03.2008, 15:26
raggazi raggazi вне форума
Прохожий
 
Регистрация: 19.03.2008
Сообщения: 32
Репутация: 10
По умолчанию помогите отладить программу или исправить

Касса вокзала.
· Структура данных хранит следующие сведения:
название пункта назначения, номер поезда, время отправления
· Отсортировать данные методом улучшенного пузырька по номерам поездов
· Сформировать список поездов, направляющихся в заданный пункт, после заданного с клавиатуры времени.

что-то тупит с юнитами.

Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Mas:Tdar;
  r:Tpoezd;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
r.naz:=Edit1.Text;
r.nomer:=strtoint(Edit2.Text);
r.time:=strtoint(Edit3.Text);
Add_to_Array(Mas,r);
end;

procedure TForm1.Button2Click(Sender: TObject);
Begin
Var
I:integer;
S:string;
Begin
For I:=0 to high(Mas) Do
begin
S:=mas[i].fam+'  '+inttostr(mas[i].naz)+'  '+inttostr(mas[i].nomer)+'  '+inttostr(mas[i].time);
Memo1.Lines.Add(s);
end;
End;
procedure TForm1.Button3Click(Sender: TObject);
begin
  Sort_Array(Mas);
 end;

procedure TForm1.Button5Click(Sender: TObject);
begin
begin
   Edit1.Clear;
   Edit2.Clear;
   Edit3.Clear;
end;

end;

procedure TForm1.Button6Click(Sender: TObject);
begin
 Memo1.Clear;
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
Close;
end;

procedure TForm1.Button4Click(Sender: TObject);
Var
   s:string;
begin
   Poisk(Mas,s);
   Memo1.Lines.Add(s);
end;

end.


unit U2;

interface
  uses
      Sysutils,Dialogs,Stdctrls;
Type
    TPoezd=record
        naz:string[10];
        nomer:byte;
        time:byte;
        sb:real;
        end;
    Tdar=array of TPoezd;

    Procedure Add_to_Array(Var Mas:Tdar;r:TPoezd);
    Procedure Sort_Array(Var Mas:Tdar);
    Procedure Poisk(Mas:Tdar; Var s:string);
implementation

 Procedure Add_to_Array(Var Mas:Tdar;r:TPoezd);
   Begin
       If Mas=nil then Setlength(Mas,1)
                  else Setlength(Mas,length(Mas)+1);
       Mas[high(Mas)]:=r;
   End;
   Procedure  Sort_Array( Var Mas:Tdar);
   var
      i,j:integer;
      r:Tstud;
   Begin
     For I:=0 to high(MAS)-1 do
        Mas[i].sb:=(Mas[i].time);
      {   Sortirovka  massiva:   }
     For I:=0 to high(MAS)-1 do
       For j:=I+1 to high(MAS) do
          if mas[i].sb>mas[j].sb  then
             begin
                r:=mas[i];
                mas[i]:=mas[j];
                mas[j]:=r;
             end;
   End;
Procedure Poisk(Mas:Tdar; var s:string);
  Var
    i:integer;
   Begin
     For I:=0 to high(MAS)-1 do
       if (mas[i].time)<>0 then
       s:=Mas[i].naz;
   end;
end.

Admin: Пользуемся тегами, иначе последуют санкции.

Последний раз редактировалось Admin, 30.03.2008 в 15:53.
Ответить с цитированием
  #2  
Старый 30.03.2008, 22:15
raggazi raggazi вне форума
Прохожий
 
Регистрация: 19.03.2008
Сообщения: 32
Репутация: 10
По умолчанию

плиз помогите отцы программирования..заранее спасибо
Ответить с цитированием
  #3  
Старый 30.03.2008, 22:27
MegaPiha MegaPiha вне форума
Активный
 
Регистрация: 24.03.2008
Сообщения: 227
Версия Delphi: Delphi 7
Репутация: 30
По умолчанию

А что за U2?
Что за типы TDar, TPoezd?


А каюсь, вижу.

Последний раз редактировалось MegaPiha, 30.03.2008 в 22:32.
Ответить с цитированием
  #4  
Старый 30.03.2008, 22:53
MegaPiha MegaPiha вне форума
Активный
 
Регистрация: 24.03.2008
Сообщения: 227
Версия Delphi: Delphi 7
Репутация: 30
По умолчанию

Цитата:
Сообщение от raggazi
плиз помогите отцы программирования..заранее спасибо
Пока нашел ряд небольших ошибок.
1.
Код:
 S:=mas[i].fam+'  '+inttostr(mas[i].naz)+'  '+inttostr(mas[i].nomer)+'  '+inttostr(mas[i].time);
mas[i].naz - строковый, его не надо переводить из integer в string.
mas[i].fam - в типе TPoezd нет поля fam.
2.
Код:
 
procedure TForm1.Button2Click(Sender: TObject);
Begin
Var
I:integer;
S:string;
Зачем begin перед var?

3 .
Код:
 
 r:Tstud;
Что за тип данный TStud? Нигде не определен.

Дальше потом посмотрю. Спать пора.
Ответить с цитированием
  #5  
Старый 31.03.2008, 19:35
MegaPiha MegaPiha вне форума
Активный
 
Регистрация: 24.03.2008
Сообщения: 227
Версия Delphi: Delphi 7
Репутация: 30
По умолчанию

Там так много всего, что слишком долго объяснять, что исправил. Выложу проект. Сделал чтобы работало занесение данных и сортировка. Поиск думаю сам доделать сможешь.
Вложения
Тип файла: zip Поезда.zip (10.7 Кбайт, 5 просмотров)
Ответить с цитированием
  #6  
Старый 01.04.2008, 15:26
raggazi raggazi вне форума
Прохожий
 
Регистрация: 19.03.2008
Сообщения: 32
Репутация: 10
По умолчанию

не правильно сохранил)))спасибо все равно
Ответить с цитированием
  #7  
Старый 01.04.2008, 20:30
MegaPiha MegaPiha вне форума
Активный
 
Регистрация: 24.03.2008
Сообщения: 227
Версия Delphi: Delphi 7
Репутация: 30
По умолчанию

Т.е. не правильно?
Ответить с цитированием
  #8  
Старый 01.04.2008, 20:44
MegaPiha MegaPiha вне форума
Активный
 
Регистрация: 24.03.2008
Сообщения: 227
Версия Delphi: Delphi 7
Репутация: 30
По умолчанию

Бес попутал....
Вложения
Тип файла: zip Поезда.zip (13.4 Кбайт, 10 просмотров)
Ответить с цитированием
  #9  
Старый 01.04.2008, 22:05
raggazi raggazi вне форума
Прохожий
 
Регистрация: 19.03.2008
Сообщения: 32
Репутация: 10
По умолчанию

хз,но опять не пашет,посмотрите кт-нить другой плиз,если я лох так и скажите)спасиб тебе еще раз
Ответить с цитированием
  #10  
Старый 02.04.2008, 19:14
MegaPiha MegaPiha вне форума
Активный
 
Регистрация: 24.03.2008
Сообщения: 227
Версия Delphi: Delphi 7
Репутация: 30
По умолчанию

Блин. В чем же дело?
Я загружаю с сайта, все работает. В корневой папке C диска.
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,StdCtrls,Unit4, Mask;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Memo1: TMemo;
    MaskEdit1: TMaskEdit;
    Edit3: TEdit;
    MaskEdit2: TMaskEdit;
    Label4: TLabel;
    Label3: TLabel;
    Label6: TLabel;

    procedure Button1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Mas:Tdar;
  Poezd:Tpoezd;
  Procedure RefreshMemo;

implementation

{$R *.dfm}




Procedure RefreshMemo;
Var i:integer;
    S:string;
Begin
   Form1.Memo1.Lines.Clear;
   For i:=0 to high(Mas) do
   begin
     // S:=mas[i].fam + '  ' + mas[i].naz + '  '+inttostr(mas[i].nomer)+ '  '+Timetostr(mas[i].time);
      S:= mas[i].naz + '  '+inttostr(mas[i].nomer)+ '  '+Timetostr(mas[i].time);
      Form1.Memo1.Lines.Add(S);
   end;
End;



procedure TForm1.Button3Click(Sender: TObject);
begin
  Sort_Array(Mas);
  RefreshMemo;
end;


procedure TForm1.Button5Click(Sender: TObject);
begin
begin
   Edit1.Clear;
   Edit2.Clear;
   MaskEdit1.Clear;
end;

end;

procedure TForm1.Button6Click(Sender: TObject);
begin
 Memo1.Clear;
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
Close;
end;

procedure TForm1.Button4Click(Sender: TObject);//Эту часть не трограл
Var
   s:string;
begin
   Poisk(Mas,s);// Переменная S не задана.
   Memo1.Lines.Add(s);
end;


procedure TForm1.Button1Click(Sender: TObject);
Var i:integer;
    s:string;
begin
   If (Edit1.Text<>'') and (Edit2.Text <>'') then
   begin
       Poezd.naz:=Edit1.Text;
       Poezd.nomer:=strtoint(Edit2.Text);
       Poezd.time:=strtotime(MaskEdit1.Text);
       Add_to_Array(Mas,Poezd);
   end;
   Refreshmemo;
end;

end.

Только я u2 сохранил под unit4
Код:
unit Unit4;

interface
  uses
      Sysutils,Dialogs,Stdctrls;
Type
   TPoezd=record
       naz:string[10]; 
       nomer:byte;     
       time:TDateTime;      
       sb:real;
      // fam:string;
   end;
   Tdar=array of TPoezd;

   Procedure Add_to_Array(Var Mas:Tdar;Poezd:TPoezd);
   Procedure Sort_Array(Var Mas:Tdar);
   Procedure Poisk(Mas:Tdar; Var s:string);

implementation


Procedure Add_to_Array(Var Mas:Tdar; Poezd:TPoezd);
Begin
    If Mas=nil then Setlength(Mas,1)
       else Setlength(Mas,length(Mas)+1);
    Mas[high(Mas)]:=Poezd;
End;


Procedure  Sort_Array( Var Mas:Tdar);
var
   i,j:integer;
   //r:Tstud;
   Poezd:TPoezd;
Begin
   For i:=0 to high(MAS)-1 do 
       Mas[i].sb:=Mas[i].nomer;
    {   Sortirovka  massiva:   }
   For i:=0 to high(MAS)-1 do
      For j:=i+1 to high(MAS) do
          if mas[i].sb > mas[j].sb  then
          begin
              Poezd:=mas[i];
              mas[i]:=mas[j];
              mas[j]:=Poezd;
          end;
End;


Procedure Poisk(Mas:Tdar; var s:string);//не менял
Var i:integer;
Begin
    For i:=0 to high(MAS)-1 do
       if (mas[i].time)<>0 then
           s:=Mas[i].naz;
    end;
end.


И скрин экрана выкладываю. Предлагаю еще сделать сохранение и считывание сведений memo из файла.
Изображения
Тип файла: jpg Скрин.JPG (71.5 Кбайт, 3 просмотров)
Ответить с цитированием
  #11  
Старый 02.04.2008, 23:05
raggazi raggazi вне форума
Прохожий
 
Регистрация: 19.03.2008
Сообщения: 32
Репутация: 10
По умолчанию

спасибо,разобрался
Ответить с цитированием
  #12  
Старый 03.04.2008, 17:09
raggazi raggazi вне форума
Прохожий
 
Регистрация: 19.03.2008
Сообщения: 32
Репутация: 10
По умолчанию

сделай поиск плиз,надо по времени вывести поезд...
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 07:34.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter