Nattttt, 22.12.2008 - 12:18
помогите пожалуйста отладить модифицированную программу "Скорость бега" в Delphi.
ПОЖАЛУЙСТА ОЧЕНЬ НАДО!
Заранее огромное спасибо!
вот код:
unit vrun1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Edit2KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
// щелчок на кнопке Вычислить
procedure TForm1.Button1Click(Sender: TObject);
var
dist : integer; // дистанция, метров
t: real; // время, как дробное число
min : integer; // время, минуты
sek : integer; // время, секунды
v: real; // скорость
begin
// получить исходные данные из полей ввода
dist := StrToInt(Edit1.Text);
t := StrToFloat(Edit2.Text);
// предварительные преобразования
min := Trunc(t); // кол-во минут - это целая часть числа t
sek := Trunc(t*100) mod 100; // кол-во секунд - это дробная часть числа t
// вычисление
v := (dist/1000) / ((min*60 + sek)/3600);
// вывод результата
label4.Caption := 'Дистанция: '+ Edit1.Text + ' м' + #13 +
'Время: ' + IntToStr(min) + ' мин ' +
IntToStr(sek) + ' сек ' + #13 +
'Скорость: ' + FloatToStrF(v,ffFixed,4,2) + ' км/час';
end;
// щелчок на кнопке Завершить
procedure TForm1.Button2Click(Sender: TObject);
begin
Form1.Close;
end;
// нажатие клавиши в поле Дистанция
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
// Key - символ, соответствующий нажатой клавише.
// Если символ недопустимый, то процедура заменяет его
// на символ с кодом 0. В результате этого символ в поле
// редактирования не появляется и у пользователя создается
// впечатление, что программа не реагирует на нажатие некоторых
// клавиш.
case Key of
'0'..'9': ; // цифра
#8 : ; //
#13 : Edit2.SetFocus ; //
// остальные символы - запрещены
else Key :=Chr(0); // символ не отображать
end;
end;
procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
'0'..'9': ; // цифра
',','.' :
// точка или запятая
begin
if Key = '.' then Key := ','; // подменим точку запятой
// проверим, есть ли в поле Edit2 запятая
if Pos(',',Edit2.Text) <> 0 // запятая уже есть
then Key:=Char(0); // вторую запятую не отображать
end;
#8 : ; //
// остальные символы - запрещены
else Key :=Chr(0); // символ не отображать
end;
end;
end.
de1ay, 22.12.2008 - 14:04
Цитата | Quote(Nattttt @ 22.12.2008 - 12:18)
"Отладка — этап разработки компьютерной программы, на котором обнаруживают, локализуют и устраняют ошибки." wiki.
Ошибки в синтаксисе тебе дельфи укажет, ошибки в логике отладчик. Слишком специфические задачи, если не быть автором программы и знать как она
должна работать.
Возможно тебе надо её собрать в .ехе? Если да, то этот процесс называется компиляцией (для дельфи).
de1ay, 22.12.2008 - 14:46
Nattttt, step over - отладка без захода в процедуры, step into - отладка с заходом в процедуры. Почитать можно здесь:
Цитата | Quote
а как записать правильно условие нахождение 10! (факториала) в делфи?
В виде функции:
Code
function FacIterative(n: Word): Longint;
var
f: LongInt;
i: Integer;
begin
f := 1;
for i := 2 to n do f := f * i;
Result := f;
end;
В виде модуля:
Code
unit factr;
interface
uses Math, Ap, Sysutils;
function Factorial(const N : Integer):Integer;
implementation
(****************
Функция вычисляет N!
****************)
function Factorial(const N : Integer):Integer;
var
I : Integer;
begin
i := 1;
Result := 1;
repeat
Result := Result*i;
i := i+1;
until not (i<=n);
end;
end.