Сейчас на форуме: hgdagon, asfa, bartolomeo (+4 невидимых)

 eXeL@B —› Программирование —› Помогите скомпилировать[Delphi]
Посл.ответ Сообщение

Ранг: 2.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 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.


Вообще у меня ещё очень много вопросов но наверное они покажуться вам слишком глупыми.
Заранее спасибо....




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 16 сентября 2006 10:27
· Личное сообщение · #2

Если хочешь, чтоб функция значение вернула, писать надо result:=true; или false, а не имя функции. Чего она тут переприсваивает-хрен знает, адрес функции может и после первого же прохода работать будет некорректно. А вообще почитал бы основы Дельфей. Да и начинать надо ломать с программ на асме или С, но никак не Дельфи. Кракми возьми типа фантомовских.



Ранг: 2.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 16 сентября 2006 10:35
· Личное сообщение · #3

Изменил но всё равно бестолку.
Из уебника много не узнаешь(всё равно я их почитываю).
А насчёт С и асма, всему своё время.




Ранг: 73.2 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 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




Ранг: 260.9 (наставник)
Активность: 0.120
Статус: Участник
John Smith

Создано: 16 сентября 2006 22:33
· Личное сообщение · #5

Ernando пишет:
А насчёт С и асма, всему своё время.

Неправильно мыслишь - делфи тебе не поможет понять устройство работы программ. Лучше возьми с++ и пиши для консоли.

-----
Недостаточно только получить знания:надо найти им приложение




Ранг: 450.1 (мудрец)
Активность: 0.260
Статус: Участник

Создано: 17 сентября 2006 02:53
· Личное сообщение · #6

Ernando

в следующий раз тема с таким названием будет удалятся сразу




Ранг: 392.8 (мудрец), 108thx
Активность: 0.260.01
Статус: Участник
REVENGE сила, БеХоЦе могила

Создано: 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 ацтой!





Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 17 сентября 2006 19:21
· Личное сообщение · #8

Archer пишет:
Если хочешь, чтоб функция значение вернула, писать надо result:=true; или false, а не имя функции.

Всё он правильно сделал, почитай основы паскаля, Result только в Delphi появился, и присваивать можно любым способом...

-----
Yann Tiersen best and do not fuck




Ранг: 37.1 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 17 сентября 2006 19:36
· Личное сообщение · #9

Может заменить if reg<>realreg на AnsiCompareString или AnsiCompareText ???


 eXeL@B —› Программирование —› Помогите скомпилировать[Delphi]
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати