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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 16.03.2008, 18:18
sopro sopro вне форума
Прохожий
 
Регистрация: 16.03.2008
Сообщения: 5
Репутация: 10
По умолчанию Кнопки тупо не работают :(

Да простят меня за спам, я и сам понимаю что всё это очень глупо, но всё-же.. Сколько я не пытался, у моей форме не заработала не одна кнопка.
Я вообще не понимаю, почему не работает, например
Код:
 procedure TForm1.Button5Click(Sender: TObject);
begin
Edit1.Clear;
...


Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Unit2;
type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit7: TEdit;
    Edit8: TEdit;
    Button1: TButton;
    Label10: TLabel;
    Label11: TLabel;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
{data}d: TEdit;
      m: TEdit;
      y: TEdit;
      t: TEdit;
    Memo1: TMemo;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    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:Tturi;

implementation

{$R *.dfm}
// Dobavit' zapis' v massiv
procedure TForm1.Button1Click(Sender: TObject);
begin
   r.Country:=Edit1.Text;
   r.City:=Edit2.Text;
   r.Servis:=Edit3.Text;
   r.Transfer:=Edit4.Text;
   r.Aeroport:=Edit5.Text;
   r.d:=strtoint(d.text);
   r.m:=strtoint(m.text);
   r.y:=strtoint(y.text);
   r.t:=t.text;
   r.Length:=strtoint(Edit7.Text);
   r.Cost:=strtoint(Edit8.Text);
   Add_to_Array(Mas,r);

end;
// Otobrazit' massiv
procedure TForm1.Button2Click(Sender: TObject);
Var
     I:Integer;
     S:string;
  Begin
   For I:=0 to high(Mas) Do
     begin
      S:=mas[i].Country+' '+mas[i].City+' '+mas[i].Servis+' '+mas[i].Transfer+' '+mas[i].Aeroport+' '+inttostr(mas[i].d)+' '+inttostr(mas[i].m)+' '+inttostr(mas[i].y)+' '+mas[i].t+' '+inttostr(mas[i].Length)+' '+inttostr(mas[i].Cost);

      Memo1.Lines.Add(s);
     end;
  End;



procedure TForm1.Button3Click(Sender: TObject);

begin
  Sort_Array(Mas);
 end;


 procedure TForm1.Button5Click(Sender: TObject);
begin
Edit1.Clear;
 Edit2.Clear;
  Edit3.Clear;
   Edit4.Clear;
    Edit5.Clear;
     Edit7.Clear;
      Edit8.Clear;
       d.Clear;
        m.Clear;
         y.Clear;
          t.Clear;
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 Unit2;

interface
  uses
      Sysutils,Dialogs,Stdctrls;
Type
    Tturi=record
        Country:String[25];
        City:String[30];
        Servis:String[150];
        Transfer:String[100];
        Aeroport:String[30];
        d:byte;
        m:byte;
        y:word;
        t:string[7];
        Length:byte;
        Cost:word;
        end;
    Tdar=array of Tturi;

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

 Procedure Add_to_Array(Var Mas:Tdar;r:Tturi);
   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:Tturi;
      sb:real;
   Begin

   {Under Construction}
   End;

 Procedure Poisk(Mas:Tdar; var s:string);


   Begin
     {Under construction}
   end;
end.
Изображения
Тип файла: jpg form.jpg (15.7 Кбайт, 6 просмотров)
Ответить с цитированием
  #2  
Старый 16.03.2008, 18:55
Аватар для s0Creator
s0Creator s0Creator вне форума
Местный
 
Регистрация: 20.02.2008
Адрес: Московская область
Сообщения: 420
Репутация: 884
По умолчанию

ты б проект запаковал и прикрепил для просмотра
вероятнее всего дело в настройках
(чтоб поместился удали файлы *.dcu;*.~*;*.exe)
Ответить с цитированием
  #3  
Старый 16.03.2008, 19:10
sopro sopro вне форума
Прохожий
 
Регистрация: 16.03.2008
Сообщения: 5
Репутация: 10
По умолчанию

ok, всё кроме еэзешника в архиве.
Вложения
Тип файла: zip rec.zip (13.0 Кбайт, 14 просмотров)
Ответить с цитированием
  #4  
Старый 16.03.2008, 19:14
sopro sopro вне форума
Прохожий
 
Регистрация: 16.03.2008
Сообщения: 5
Репутация: 10
По умолчанию

Ладно, вот задание ещё:

Справочник туриста.
• Турагенство предлагает услуги: Страна, Город, Экскурсионное обслуживание, Сервис принимающей стороны, Стоимость путевки.
• Выполнить сортировку данных методом прямой вставки по стране
• Сформировать список туров по стране и стоимости
Ответить с цитированием
  #5  
Старый 16.03.2008, 20:15
Аватар для s0Creator
s0Creator s0Creator вне форума
Местный
 
Регистрация: 20.02.2008
Адрес: Московская область
Сообщения: 420
Репутация: 884
По умолчанию

лови обратно
както странно
сперва похоже на неработающие
а потом все пошло
Вложения
Тип файла: zip rectest.zip (9.9 Кбайт, 16 просмотров)
Ответить с цитированием
  #6  
Старый 16.03.2008, 20:30
Аватар для s0Creator
s0Creator s0Creator вне форума
Местный
 
Регистрация: 20.02.2008
Адрес: Московская область
Сообщения: 420
Репутация: 884
По умолчанию

наверно ты и сам разобрался
я когда смотрел переходил на обработчики двойным щелчком
они и перепривязывались
у тебя кроме Button2Click
ни один обработчик небыл привязан к кнопке
Ответить с цитированием
  #7  
Старый 16.03.2008, 20:44
Аватар для s0Creator
s0Creator s0Creator вне форума
Местный
 
Регистрация: 20.02.2008
Адрес: Московская область
Сообщения: 420
Репутация: 884
По умолчанию

Цитата:
Сообщение от sopro
Ладно, вот задание ещё:

Справочник туриста.
• Турагенство предлагает услуги: Страна, Город, Экскурсионное обслуживание, Сервис принимающей стороны, Стоимость путевки.
• Выполнить сортировку данных методом прямой вставки по стране
• Сформировать список туров по стране и стоимости
ты что домашнее задание на понедельник не сделал?
Ответить с цитированием
  #8  
Старый 16.03.2008, 21:14
sopro sopro вне форума
Прохожий
 
Регистрация: 16.03.2008
Сообщения: 5
Репутация: 10
По умолчанию

Нет, просто студенты после жареной сессию хотят всё быстрей сдать
Ответить с цитированием
  #9  
Старый 16.03.2008, 22:03
Аватар для s0Creator
s0Creator s0Creator вне форума
Местный
 
Регистрация: 20.02.2008
Адрес: Московская область
Сообщения: 420
Репутация: 884
По умолчанию

можно так (если не сильно просто)
Код:
  Procedure  Sort_Array( Var Mas:Tdar);
   var
      i:integer;
      r:Tturi;
      chan:boolean;
   Begin
     // если по быстрому написать и грубо
     // правда несовсем понял про прямую вставку
     chan := true;
     while chan do
     begin
     chan := false;
       for i := 0 to high(Mas) - 1 do
       begin
         if Mas[i].Country > Mas[i+1].Country then
         begin
           r := Mas[i];
           Mas[i] := Mas[i+1];
           Mas[i+1] := r;
           chan := true;
         end;
       end;
     end;
   End;
Ответить с цитированием
  #10  
Старый 16.03.2008, 23:05
sopro sopro вне форума
Прохожий
 
Регистрация: 16.03.2008
Сообщения: 5
Репутация: 10
По умолчанию

s0Creator разрулил всё, ещё и в дополнительно помог.

Тему закрываем-с

Последний раз редактировалось sopro, 16.03.2008 в 23:17.
Ответить с цитированием
  #11  
Старый 17.03.2008, 12:35
AlexSku AlexSku вне форума
Специалист
 
Регистрация: 07.05.2007
Адрес: Москва
Сообщения: 884
Репутация: 21699
По умолчанию

Цитата:
Сообщение от s0Creator
можно так (если не сильно просто)
Код:
  // правда несовсем понял про прямую вставку
Точнее, совсем не понял. Реализована схема обмена "Пузырёк". А "прямая вставка" делается так. Ищется максимальный элемент. Удаляется из исходного списка и ставится первым в новый список. Затем в исходном списке ищется новый максимум и переносится на второе место нового списка. Вот так формируется упорядоченный список.
Ответить с цитированием
  #12  
Старый 17.03.2008, 15:15
Аватар для s0Creator
s0Creator s0Creator вне форума
Местный
 
Регистрация: 20.02.2008
Адрес: Московская область
Сообщения: 420
Репутация: 884
По умолчанию

Цитата:
Сообщение от AlexSku
Точнее, совсем не понял. Реализована схема обмена "Пузырёк". А "прямая вставка" делается так. Ищется максимальный элемент. Удаляется из исходного списка и ставится первым в новый список. Затем в исходном списке ищется новый максимум и переносится на второе место нового списка. Вот так формируется упорядоченный список.
Да действительно реализована схема "сортировки пузырьком".
Только, помоему, Вы тоже не совсем разобрались в методе "прямой вставки".(либо в разных источниках он называется по разному)
Описаный вами метод по материалам найденым мной называется "методом отбора"
например сдесь
http://www.avhohlov.narod.ru/p2100ru.htm#ssort
Цитата:
Сортировка отбором (selection sort)

'Очевидный' алгоритм сортировки - перебором находится наименьший элемент, он меняется местами с элементом, стоящим на нулевом месте, затем находится наименьший среди оставшихся и меняется местами с элементом, стоящим на первом месте... Цикл заканчивается когда будут выбраны все элементы:
"Сортировка вставками" описана в том же источнике
(http://www.avhohlov.narod.ru/p2100ru.htm#isort) так:
Цитата:
Сортировка вставками (insertion sort)

Сортируемый масив просматривается в порядке возрастания номеров и каждый элемент вставляется в уже просмотренную часть массива так, чтобы сохранить порядок. На каждом шаге сортировки часть массива уже упорядочена, поэтому для поиска места вставки можно использовать метод половинного деления:
или в http://docs.com.ru/algoritm_1.php
Цитата:
создается новый массив, в который мы последовательно вставляем элементы из исходного массива так, чтобы новый массив был упорядоченным.
Но к сожалению мне так и не удалось найти описание сортировки "методом прямой вставки"
sopro выбирай каким тебе методом, если седня дела не замучают накодим
Ответить с цитированием
  #13  
Старый 17.03.2008, 21:02
Аватар для s0Creator
s0Creator s0Creator вне форума
Местный
 
Регистрация: 20.02.2008
Адрес: Московская область
Сообщения: 420
Репутация: 884
По умолчанию

Во искупление допущенной ошибки написал все три метода
правда вряд ли оптимизированные (кто желает может выложить оптимизированные)
немного оптимизированный "метод пузрьков"
Код:
 
  Procedure  Sort_Array( Var Mas:Tdar);
   var
      i,h :integer;
      r   :Tturi;
      chan:boolean;
   Begin
     for h := high(Mas) downto 1 do
     begin
       chan := false;
       for i := 1 to h do
         if AnsiCompareStr(Mas[i-1].Country, Mas[i].Country) > 0 then
         //if Mas[i-1].Country > Mas[i].Country then
         begin
           r := Mas[i-1];
           Mas[i-1] := Mas[i];
           Mas[i] := r;
           chan := true;
         end;
       if not chan then break;
     end;
   End;
"метод отбора" (возможно прямой вставки)
Код:
  // "метод отбора" (возможно прямой вставки)
  // без создания дополнительного массива
  Procedure  Sort_Array( Var Mas:Tdar);
   var
      i,k,Kmin :integer;
      r   :Tturi;
   Begin
     for k := 0 to high(Mas) - 1 do
     // k - номер уже отсортированного элемента к концу цикла
     begin
       Kmin := k; // Kmin - номер элемента с минимальным значением
       for i := k + 1 to high(Mas) do
         if AnsiCompareStr(Mas[Kmin].Country, Mas[i].Country) > 0 then
         //if Mas[Kmin].Country > Mas[i].Country then
         begin
           Kmin := i;
         end;
       if Kmin <> k then
       begin
         r := Mas[k];
         Mas[k] := Mas[Kmin];
         Mas[Kmin] := r;
       end;
     end;
   End;
"метод вставки"
Код:
  // "метод вставки"
  // без создания дополнительного массива
  Procedure  Sort_Array( Var Mas:Tdar);
   var
      i,k,Kmin :integer;
      r   :Tturi;
      chan:boolean;
   Begin
     for k := 1 to high(Mas) do
     // k - номер элемента вставляемого в упорядоченный массив [0..k-1]
     begin
       r := Mas[k];
       chan := false;
       for i := k - 1 downto 0 do
        begin
         if AnsiCompareStr(Mas[i].Country, r.Country) > 0 then
         //if Mas[i].Country > r.Country then
         begin
           Mas[i+1] := Mas[i];
         end
         else
         begin
           if k <> (i+1) then Mas[i+1] := r;
           chan := true;
           break;
         end;
        end;
       if not chan then Mas[0] := r;
     end;
   End;
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter