![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Да простят меня за спам, я и сам понимаю что всё это очень глупо, но всё-же.. Сколько я не пытался, у моей форме не заработала не одна кнопка.
Я вообще не понимаю, почему не работает, например Код:
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. |
|
#2
|
||||
|
||||
|
ты б проект запаковал и прикрепил для просмотра
вероятнее всего дело в настройках (чтоб поместился удали файлы *.dcu;*.~*;*.exe) |
|
#3
|
|||
|
|||
|
ok, всё кроме еэзешника в архиве.
|
|
#4
|
|||
|
|||
|
Ладно, вот задание ещё:
Справочник туриста. • Турагенство предлагает услуги: Страна, Город, Экскурсионное обслуживание, Сервис принимающей стороны, Стоимость путевки. • Выполнить сортировку данных методом прямой вставки по стране • Сформировать список туров по стране и стоимости |
|
#5
|
||||
|
||||
|
лови обратно
както странно сперва похоже на неработающие а потом все пошло ![]() |
|
#6
|
||||
|
||||
|
наверно ты и сам разобрался
я когда смотрел переходил на обработчики двойным щелчком они и перепривязывались у тебя кроме Button2Click ни один обработчик небыл привязан к кнопке ![]() |
|
#7
|
||||
|
||||
|
Цитата:
![]() |
|
#8
|
|||
|
|||
|
Нет, просто студенты после жареной сессию хотят всё быстрей сдать
![]() |
|
#9
|
||||
|
||||
|
можно так (если не сильно просто)
Код:
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
|
|||
|
|||
|
s0Creator разрулил всё, ещё и в дополнительно помог.
Тему закрываем-с ![]() Последний раз редактировалось sopro, 16.03.2008 в 23:17. |
|
#11
|
|||
|
|||
|
Цитата:
|
|
#12
|
||||
|
||||
|
Цитата:
Только, помоему, Вы тоже не совсем разобрались в методе "прямой вставки".(либо в разных источниках он называется по разному) Описаный вами метод по материалам найденым мной называется "методом отбора" например сдесь http://www.avhohlov.narod.ru/p2100ru.htm#ssort Цитата:
(http://www.avhohlov.narod.ru/p2100ru.htm#isort) так: Цитата:
Цитата:
sopro выбирай каким тебе методом, если седня дела не замучают накодим ![]() |
|
#13
|
||||
|
||||
|
Во искупление допущенной ошибки написал все три метода
правда вряд ли оптимизированные (кто желает может выложить оптимизированные) немного оптимизированный "метод пузрьков" Код:
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; |