Сейчас на форуме: hgdagon, asfa, bartolomeo (+4 невидимых) |
![]() |
eXeL@B —› Программирование —› Помогите скомпилировать[Delphi] |
Посл.ответ | Сообщение |
|
Создано: 16 сентября 2006 10:18 · Поправил: Модератор · Личное сообщение · #1 Начну с того что я пока что всего лишь учусь, так что за чушь которую я скорее всего начну сейчас нести не судите строго... Полюбому здесь есть те кто хорошо разбирается в Delphi. Так вот. Я начал изучать крек напару с этим языком(пишу левые крякмиксы, а потом рассматриваю их под отладчиком). Проблема собственно заключается в том что мой проект не хочет компилироваться, а после некоторых изменений компилится, но неправильно. Проэкт представляет из себя обычный Дискриминант кот. начнёт считать тока после регистрации. Вот код: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Button1: TButton; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} function Unreg: Boolean ; var reg: string ; realreg: string ; begin result:=false ; realreg:='ERn@ndo' ; reg:=InputBox('Registration','Enter you Serial number','') ; if reg<>realreg then begin ShowMessage('You invalid serial number. Try agean!'); Unreg:=False; end else begin ShowMessage('Thank You'); Unreg:=True; end end; procedure TForm1.Button2Click(Sender: TObject); begin Unreg; end; procedure TForm1.Button1Click(Sender: TObject); var a: real ; b: real ; c: real ; x1,x2,d: real ; r: boolean; label loop; begin if Unreg then begin ShowMessage('Please to Rigister'); goto loop; end else a:=StrToFloat(Edit1.Text); b:=StrToFloat(Edit2.Text); c:=StrToFloat(Edit3.Text); d:=Sqr(b)-4*a*c ; if d=0 then begin x1:=b/2*a ; Label1.Caption:='Уравнение имеет только один корень'+ #13 + 'X = '+ FloatToStr(x1) ; end ; if d<0 then begin Label1.Caption:='Уравнение корней не имеет' ; end else begin x1:=(-b-Sqrt(d))/(2*a); x2:=(-b+Sqrt(d))/(2*a); Label1.Caption:= 'D = ' + FloatToStr(d) + #13 + 'X1 = ' + FloatToStr(x1) + #13 + 'X2 = ' + FloatToStr(x2); loop: Edit1.Text:=''; Edit2.Text:=''; Edit3.Text:=''; end; end; end. Вообще у меня ещё очень много вопросов но наверное они покажуться вам слишком глупыми. Заранее спасибо.... ![]() |
|
Создано: 16 сентября 2006 10:27 · Личное сообщение · #2 Если хочешь, чтоб функция значение вернула, писать надо result:=true; или false, а не имя функции. Чего она тут переприсваивает-хрен знает, адрес функции может и после первого же прохода работать будет некорректно. А вообще почитал бы основы Дельфей. Да и начинать надо ломать с программ на асме или С, но никак не Дельфи. Кракми возьми типа фантомовских. ![]() |
|
Создано: 16 сентября 2006 10:35 · Личное сообщение · #3 |
|
Создано: 16 сентября 2006 11:46 · Личное сообщение · #4 1. label loop; begin if Unreg then begin ShowMessage('Please to Rigister'); goto loop; <- ненадо это end; сдесь не нужен оператор GOTO 2. if Unreg then begin <- сдесь заменить Unreg = False, т.к у тебя при успешной проверке возвращается True ShowMessage('Please to Rigister'); goto loop; <- ненадо это end else ![]() |
|
Создано: 16 сентября 2006 22:33 · Личное сообщение · #5 |
|
Создано: 17 сентября 2006 02:53 · Личное сообщение · #6 |
|
Создано: 17 сентября 2006 05:48 · Поправил: Maximus · Личное сообщение · #7 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; Unreg: Boolean = True; implementation {$R *.dfm} function Registration: Boolean ; var reg: string ; realreg: string ; begin result:=false ; realreg:='Maximus ![]() reg:=InputBox('Registration','Enter you Serial number','') ; if reg<>realreg then begin ShowMessage('You invalid serial number. Try agean!'); Result:=True; end else begin ShowMessage('Thank You'); Result:=False; end end; procedure TForm1.Button2Click(Sender: TObject); begin Unreg:=Registration; end; procedure TForm1.Button1Click(Sender: TObject); var a: real ; b: real ; c: real ; x1,x2,d: real ; r: boolean; begin if Unreg then begin ShowMessage('Please to Rigister'); end else begin a:=StrToFloat(Edit1.Text); b:=StrToFloat(Edit2.Text); c:=StrToFloat(Edit3.Text); d:=Sqr(b)-4*a*c ; if d=0 then begin x1:=b/2*a ; Label1.Caption:='Уравнение имеет только один корень'+ #13 + 'X = '+ FloatToStr(x1) ; end ; if d<0 then begin Label1.Caption:='Уравнение корней не имеет' ; end else begin x1:=(-b-Sqrt(d))/(2*a); x2:=(-b+Sqrt(d))/(2*a); Label1.Caption:= 'D = ' + FloatToStr(d) + #13 + 'X1 = ' + FloatToStr(x1) + #13 + 'X2 = ' + FloatToStr(x2); end; end; Edit1.Text:=''; Edit2.Text:=''; Edit3.Text:=''; end; end. ----- StarForce и Themida ацтой! ![]() |
|
Создано: 17 сентября 2006 19:21 · Личное сообщение · #8 |
|
Создано: 17 сентября 2006 19:36 · Личное сообщение · #9 |
![]() |
eXeL@B —› Программирование —› Помогите скомпилировать[Delphi] |