|
|
Регистрация | << Правила форума >> | 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; |