Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.09.2013, 00:23   #11
программирование
Форумчанин
 
Регистрация: 22.04.2013
Сообщений: 162
Восклицание а можете посмотреть, что не так в моём коде

вот мой код

Код:
interface 

uses 
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, 
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls; 

type 
  TForm1 = class(TForm) 
    month: TLabel; 
    Label1: TLabel; 
    Label2: TLabel; 
    rik: TButton; 
    Edit1: TEdit; 
    Edit2: TEdit; 
    Edit3: TEdit; 
    Label1: TLabel; 
    Label2: TLabel; 
    Edit4: TEdit; 

     procedure Button1Click(Sender: TObject); 
  private 
    { Private declarations } 
  public 
    { Public declarations } 
  end; 
  tdate=class 
    month,day,year:integer; 
    procedure setvalue(m,d,y:integer); 
    function leapyear:boolean; 

  end; 
tdate=class 
    month,day,year:integer; 
    procedure setvalue(m,d,y:integer); 
    function leapyear:boolean; 

  end; 

var 
  Form1: TForm1; 
    aday:tdate; 
  mn,dn,yn:integer; 


implementation 

{$R *.dfm} 
 procedure tdate.setvalue(m,d,y:integer); 
begin 
 month:=m; 
 day:=d; 
 year:=y; 
end; 
function tdate.leapyear:boolean; 
begin 
 if  (year mod 4 <>0) then 
      leapyear:=false 
 else if (year mod 100<>0) then 
      leapyear:=true 
 else if (year mod 400<>0) then 
      leapyear:=false 
 else 
      leapyear:=true; 
end; 
procedure TForm1.Button1Click(Sender: TObject); 
begin 
   // ctvorenna obektu 
   aday:=tdate.Create ; 
   // vikorictanna ego 
   mn:=strtoint(form1.edit1.text);dn:=strtoint(form1.edit2.text);yn:=strtoint(form1.edit3.text); 
   aday.setvalue(mn,dn,yn); 


   if aday.leapyear  then 
    showmessage('Visokicniy rik:' + inttostr(aday.year)+' '+inttostr(yn)) 
      else 
    showmessage('NEvisokicniy rik:' + inttostr(aday.year)); 
    //znichenna obekta 
    form1.edit4.Text:='Vi vveli datu '+inttostr(dn)+'/'+inttostr(mn)+'/'+inttostr(yn); 
    aday.Free; 
end; 
 Procedure tdate.TellQuarter; 
begin 

case mn of 
12,1,2:showmessage('Winter'); 
3..5:showmessage('Spring'); 
6..8:showmessage('Summer'); 
9..11:showmessage('Autumn'); 
end; 
  function tmydate.getdays: integer; 
const 
  days: array [1 .. 11] of integer = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30); 
var 
  i, c: integer; 
begin 
  c := day; 
  for i := 1 to month - 1 do 
    inc(c, days[i]); 
  inc(c, ord((month > 2) and leapyear)); 
  result := c; 
end; 
 begin 
   // ctvorenna obektu 
   aday:=tdate.Create ; 
   // vikorictanna ego 
   mn:=1;dn:=1;yn:=2001; 
   aday.setvalue(mn,dn,yn); 
   if aday.leapyear  then 
    showmessage('Visokicniy rik:' + inttostr(aday.year)) 
    else 
    showmessage('NEvisokicniy rik:' + inttostr(aday.year)); 
    //znichenna obekta 
    aday.Free; 

end.
заранее огромное спасибо!

Последний раз редактировалось Serge_Bliznykov; 20.09.2013 в 08:56. Причина: заменил тег [PHP] на тег [CODE]
программирование вне форума Ответить с цитированием
Старый 22.09.2013, 19:22   #12
программирование
Форумчанин
 
Регистрация: 22.04.2013
Сообщений: 162
Восклицание нахождение высокосного года, сезона года и к-ва дне с начала года Делфи 7 (есть код программы полностью)

добрый вечер, программисты. помогите, пожалуйста,разобраться с ошибкой в вызове функции в основной программе в Делфи 7 (в функции нахождения времени года (зима,весна,лето,осень)). логика нахождения высокосного года, сезона года и количества дней с начала года - правильная, но только нужно разобраться в том как всё правильно составить в одной программе, и чтобы всё работало (пока что работает только вычисление высокосный год или нет).

вот код программы
PHP код:
unit Unit3;

interface

uses
  Winapi
.WindowsWinapi.MessagesSystem.SysUtilsSystem.VariantsSystem.ClassesVcl.Graphics,
  
Vcl.ControlsVcl.FormsVcl.DialogsVcl.StdCtrls;

type
  TForm3 
= class(TForm)
    
Label1TLabel;
    
Label2TLabel;
    
Label3TLabel;
    
Edit1TEdit;
    
Edit2TEdit;
    
Edit3TEdit;
    
Button1TButton;
    
Edit4TEdit;
    
Button2TButton;
    
Edit5TEdit;
    
procedure Button1Click(SenderTObject);
  private
    { Private 
declarations }
  public
    { Public 
declarations }
  
end;
tdate=class
    
month,day,year:integer;
    
procedure setvalue(m,d,y:integer);
    
procedure prog(m:integer);
     
procedure pr(m,d:integer);
    function 
leapyear:boolean;
    function 
poragodainteger;
    function 
getdaysinteger;
  
end;

var
  
Form3TForm3;
  
aday:tdate;
  
mn,dn,yn,para,mes,dni,mo:integer;
implementation

{$R *.dfm}
 
procedure tdate.setvalue(m,d,y:integer);
begin
 month
:=m;
 
day:=d;
 
year:=y;
end;

function 
tdate.leapyear:boolean;
begin
 
if  (year mod 4 <>0then
      leapyear
:=false
 
else if (year mod 100<>0then
      leapyear
:=true
 
else if (year mod 400<>0then
      leapyear
:=false
 
else
      
leapyear:=true;
end;
procedure tdate.prog(m:integer);
begin
month
:=m;
end;

 function 
tdate.poragodainteger;
 
begin
 
if  (month =12) or (month =1) or (month =12then poragoda:=1;
 
end;
   
procedure tdate.pr(m,d:integer);
   
begin
   month
:=m;
   
day:=d;
   
end;
function 
tdate.getdaysinteger;
  
begin
   
if mn=1 then  showmessage(inttostr (dn));
   if 
mn=3 then  showmessage(inttostr ((31)+dn));
   if 
mn=4 then  showmessage(inttostr (dn+31+28));
   if 
mn=5 then  showmessage(inttostr (dn+31+28+30));
   if 
mn=6 then  showmessage(inttostr (dn));
   if 
mn=7 then  showmessage(inttostr (dn));
   if 
mn=8 then  showmessage(inttostr (dn));
   if 
mn=9 then  showmessage(inttostr (dn));
   if 
mn=10 then  showmessage(inttostr (dn));
   if 
mn=11 then  showmessage(inttostr (dn));
   if 
mn=12 then  showmessage(inttostr (dn));
   
end;
procedure TForm3.Button1Click(SenderTObject);
begin
   
// ctvorenna obektu
   
aday:=tdate.Create ;
   
// vikorictanna ego
   
mn:=strtoint(form3.edit1.text);dn:=strtoint(form3.edit2.text);yn:=strtoint(form3.edit3.text);
   
aday.setvalue(mn,dn,yn);
   if 
adayPoragoda=1  then
        showmessage
('Zima');
   if 
aday.leapyear  then
    showmessage
('Visokicniy rik:' inttostr(aday.year)+' '+inttostr(yn))
      else
    
showmessage('NEvisokicniy rik:' inttostr(aday.year));
    
//znichenna obekta
    
form3.edit4.Text:='Vi vveli datu '+inttostr(dn)+'/'+inttostr(mn)+'/'+inttostr(yn);
    
aday.Free;
end;
begin
   
// ctvorenna obektu
   
aday:=tdate.Create ;
   
// vikorictanna ego
   
mn:=1;dn:=1;yn:=2001;
   
aday.setvalue(mn,dn,yn);
   if 
aday.leapyear  then
    showmessage
('Visokicniy rik:' inttostr(aday.year))
    else
    
showmessage('NEvisokicniy rik:' inttostr(aday.year));
    
//znichenna obekta
    
aday.Free;
    
aday:=tdate.Create;
    
mo:=12;
    
aday.poragoda(m);
    if 
Poragoda=1  then
     showmessage
('Zima');
     
aday.Free;


end
ошибку выдаёт в строчке
PHP код:
 aday.poragoda(m); 
в ошибке указано:
PHP код:
[dcc32 WarningUnit3.pas(72): W1035 Return value of function 'tdate.poragoda' might be undefined 
помогите, пожалуйста, разобраться!!!

заранее огромное спасибо всем за помощь!!!
программирование вне форума Ответить с цитированием
Старый 22.09.2013, 19:30   #13
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

aday.paragoda() - это функция и соответственна она возвращает значение (в данном случае целочисленное), а у вас значение не возвращается. Должно быть так
Код:
Var
  mameParametr : Integer;
....
nameParametr := aday.paragoda(m);
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 22.09.2013, 19:52   #14
программирование
Форумчанин
 
Регистрация: 22.04.2013
Сообщений: 162
Вопрос все равно пишет ошибку

GetMax, программа выдаёт ошибку.

вот код программы с вашими изменениями
PHP код:
unit Unit3;

interface

uses
  Winapi
.WindowsWinapi.MessagesSystem.SysUtilsSystem.VariantsSystem.ClassesVcl.Graphics,
  
Vcl.ControlsVcl.FormsVcl.DialogsVcl.StdCtrls;

type
  TForm3 
= class(TForm)
    
Label1TLabel;
    
Label2TLabel;
    
Label3TLabel;
    
Edit1TEdit;
    
Edit2TEdit;
    
Edit3TEdit;
    
Button1TButton;
    
Edit4TEdit;
    
Button2TButton;
    
Edit5TEdit;
    
procedure Button1Click(SenderTObject);
  private
    { Private 
declarations }
  public
    { Public 
declarations }
  
end;
 
tdate=class
    
month,day,year:integer;
    
procedure setvalue(m,d,y:integer);
    
procedure prog(m:integer);
     
procedure pr(m,d:integer);
    function 
leapyear:boolean;
    function 
poragodainteger;
    function 
getdaysinteger;
  
end;

var
  
Form3TForm3;
  
aday:tdate;
  
mn,dn,yn,para,mes,dni,mo:integer;
  
nameParametr:integer;

implementation

{$R *.dfm}
 
procedure tdate.setvalue(m,d,y:integer);
begin
 month
:=m;
 
day:=d;
 
year:=y;
end;
function 
tdate.leapyear:boolean;
begin
 
if  (year mod 4 <>0then
      leapyear
:=false
 
else if (year mod 100<>0then
      leapyear
:=true
 
else if (year mod 400<>0then
      leapyear
:=false
 
else
      
leapyear:=true;
end;
procedure tdate.prog(m:integer);
begin
month
:=m;
end;

 function 
tdate.poragodainteger;
 
begin
 
if  (month =12) or (month =1) or (month =12then poragoda:=1;
 
end;
   
procedure tdate.pr(m,d:integer);
   
begin
   month
:=m;
   
day:=d;
   
end;
 function 
tdate.getdaysinteger;
  
begin
   
if mn=1 then  showmessage(inttostr (dn));
   if 
mn=3 then  showmessage(inttostr ((31)+dn));
   if 
mn=4 then  showmessage(inttostr (dn+31+28));
   if 
mn=5 then  showmessage(inttostr (dn+31+28+30));
   if 
mn=6 then  showmessage(inttostr (dn));
   if 
mn=7 then  showmessage(inttostr (dn));
   if 
mn=8 then  showmessage(inttostr (dn));
   if 
mn=9 then  showmessage(inttostr (dn));
   if 
mn=10 then  showmessage(inttostr (dn));
   if 
mn=11 then  showmessage(inttostr (dn));
   if 
mn=12 then  showmessage(inttostr (dn));
   
end;
procedure TForm3.Button1Click(SenderTObject);
begin
   
// ctvorenna obektu
   
aday:=tdate.Create ;
   
// vikorictanna ego
   
mn:=strtoint(form3.edit1.text);dn:=strtoint(form3.edit2.text);yn:=strtoint(form3.edit3.text);
   
aday.setvalue(mn,dn,yn);
   if 
adayPoragoda=1  then
        showmessage
('Zima');
   if 
aday.leapyear  then
    showmessage
('Visokicniy rik:' inttostr(aday.year)+' '+inttostr(yn))
      else
    
showmessage('NEvisokicniy rik:' inttostr(aday.year));
    
//znichenna obekta
    
form3.edit4.Text:='Vi vveli datu '+inttostr(dn)+'/'+inttostr(mn)+'/'+inttostr(yn);
    
aday.Free;
end;
  
begin
   
// ctvorenna obektu
   
aday:=tdate.Create ;
   
// vikorictanna ego
   
mn:=1;dn:=1;yn:=2001;
   
aday.setvalue(mn,dn,yn);
   if 
aday.leapyear  then
    showmessage
('Visokicniy rik:' inttostr(aday.year))
    else
    
showmessage('NEvisokicniy rik:' inttostr(aday.year));
    
//znichenna obekta
    
aday.Free;
    
aday:=tdate.Create;
    
m:12;
    
nameParametr:=aday.poragoda(m);
    if 
Poragoda=1  then
     showmessage
('Zima');
     
aday.Free;


end
ваши изменения есть, но программа выдаёт ошибку в строчке
PHP код:
mo:12
и даже когда я её меняю на строчку
PHP код:
 m:12
.
а когда убераю строчку, то ошибка выдаётся в строчке
PHP код:
nameParametr:=aday.poragoda(m); 
помогите, пожалуйста,разобраться.

всем огромное спасибо за помощь!
программирование вне форума Ответить с цитированием
Старый 22.09.2013, 20:03   #15
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Код:
 m:12;
А что это вообще такое? Может m := 12?
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 22.09.2013, 20:15   #16
программирование
Форумчанин
 
Регистрация: 22.04.2013
Сообщений: 162
Вопрос ошибка всё в той же строчке

GetMax,
PHP код:
 mn:=12
это 12 месяц.

но всё равно выдаёт ошибку в строчке
PHP код:
nameParametr:=aday.poragoda(m); 
вот ошибка
PHP код:
[dcc32 ErrorUnit3.pas(126): E2034 Too many actual parameters 
программирование вне форума Ответить с цитированием
Старый 22.09.2013, 20:18   #17
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

функция poragoda не принимает параметров
Код:
 function tdate.poragoda: integer;
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 22.09.2013, 20:26   #18
программирование
Форумчанин
 
Регистрация: 22.04.2013
Сообщений: 162
Вопрос снова ошибка в этой программе

GetMax,пожалуйста, запустите эту программу в Делфи 7.
все ваши замечания учтены, но всё равно ошибка в ой же строчке.

вот код программы(посмотрите,пожалуйста,по-внимательнее)

PHP код:
unit Unit3;

interface

uses
  Winapi
.WindowsWinapi.MessagesSystem.SysUtilsSystem.VariantsSystem.ClassesVcl.Graphics,
  
Vcl.ControlsVcl.FormsVcl.DialogsVcl.StdCtrls;

type
  TForm3 
= class(TForm)
    
Label1TLabel;
    
Label2TLabel;
    
Label3TLabel;
    
Edit1TEdit;
    
Edit2TEdit;
    
Edit3TEdit;
    
Button1TButton;
    
Edit4TEdit;
    
Button2TButton;
    
Edit5TEdit;
    
procedure Button1Click(SenderTObject);
  private
    { Private 
declarations }
  public
    { Public 
declarations }
  
end;
 
tdate=class
    
month,day,year:integer;
    
procedure setvalue(m,d,y:integer);
    
procedure prog(m:integer);
     
procedure pr(m,d:integer);
    function 
leapyear:boolean;
    function 
poragodainteger;
    function 
getdaysinteger;
  
end;

var
  
Form3TForm3;
  
aday:tdate;
  
mn,dn,yn,para,mes,dni,mo:integer;
  
nameParametr:integer;

implementation

{$R *.dfm}
 
procedure tdate.setvalue(m,d,y:integer);
begin
 month
:=m;
 
day:=d;
 
year:=y;
end;
function 
tdate.leapyear:boolean;
begin
 
if  (year mod 4 <>0then
      leapyear
:=false
 
else if (year mod 100<>0then
      leapyear
:=true
 
else if (year mod 400<>0then
      leapyear
:=false
 
else
      
leapyear:=true;
end;
procedure tdate.prog(m:integer);
begin
month
:=m;
end;

 function 
tdate.poragodainteger;
 
begin
 
if  (month =12) or (month =1) or (month =12then poragoda:=1;
 
end;
   
procedure tdate.pr(m,d:integer);
   
begin
   month
:=m;
   
day:=d;
   
end;
function 
tdate.getdaysinteger;
  
begin
   
if mn=1 then  showmessage(inttostr (dn));
   if 
mn=3 then  showmessage(inttostr ((31)+dn));
   if 
mn=4 then  showmessage(inttostr (dn+31+28));
   if 
mn=5 then  showmessage(inttostr (dn+31+28+30));
   if 
mn=6 then  showmessage(inttostr (dn));
   if 
mn=7 then  showmessage(inttostr (dn));
   if 
mn=8 then  showmessage(inttostr (dn));
   if 
mn=9 then  showmessage(inttostr (dn));
   if 
mn=10 then  showmessage(inttostr (dn));
   if 
mn=11 then  showmessage(inttostr (dn));
   if 
mn=12 then  showmessage(inttostr (dn));
   
end;

procedure TForm3.Button1Click(SenderTObject);
begin
   
// ctvorenna obektu
   
aday:=tdate.Create ;
   
// vikorictanna ego
   
mn:=strtoint(form3.edit1.text);dn:=strtoint(form3.edit2.text);yn:=strtoint(form3.edit3.text);
   
aday.setvalue(mn,dn,yn);
   if 
adayPoragoda=1  then
        showmessage
('Zima');
   if 
aday.leapyear  then
    showmessage
('Visokicniy rik:' inttostr(aday.year)+' '+inttostr(yn))
      else
    
showmessage('NEvisokicniy rik:' inttostr(aday.year));
    
//znichenna obekta
    
form3.edit4.Text:='Vi vveli datu '+inttostr(dn)+'/'+inttostr(mn)+'/'+inttostr(yn);
    
aday.Free;
end;
 
begin
   
// ctvorenna obektu
   
aday:=tdate.Create ;
   
// vikorictanna ego
   
mn:=1;dn:=1;yn:=2001;
   
aday.setvalue(mn,dn,yn);
   if 
aday.leapyear  then
    showmessage
('Visokicniy rik:' inttostr(aday.year))
    else
    
showmessage('NEvisokicniy rik:' inttostr(aday.year));
    
//znichenna obekta
    
aday.Free;
    
aday:=tdate.Create;
     
mn:=12;
    function 
tdate.poragoda:integer;
    if 
Poragoda=1  then
     showmessage
('Zima');
     
aday.Free;


end
ошибка в строчке:
PHP код:
function tdate.poragoda:integer
причина ошибки:
PHP код:
[dcc32 ErrorUnit3.pas(126): E2023 Function needs result type 
заранее огромное спасибо за помощь!
программирование вне форума Ответить с цитированием
Старый 22.09.2013, 20:48   #19
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Код:
  function tdate.poragoda:integer;
Что это делает посреди кода? Наверно должно быть как то так
Код:

procedure TForm3.Button1Click(Sender: TObject);
    ....
    mn := 12;
    aday.setvalue(mn,dn,yn);
    if aday.poragoda() = 1  then 
       showmessage('Zima'); 
    aday.Free;
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681

Последний раз редактировалось GetMax; 22.09.2013 в 20:50.
GetMax вне форума Ответить с цитированием
Старый 22.09.2013, 22:17   #20
программирование
Форумчанин
 
Регистрация: 22.04.2013
Сообщений: 162
Вопрос не понятна строчка

GetMax, немного не понятно,что в вашем коде в скобках (а вернее почему в них ничего нет) в этой строчке:
PHP код:
 if aday.poragoda() = 1  then 
огромное спасибо, вам GetMax, за помощь.
программирование вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какой по счёту день от начала года(не работает скрипт) maxim456 JavaScript, Ajax 3 22.03.2012 09:44
Даны числа A,B,C обозначающие дату.Найти номер этого дня от начала года. naty7773 Помощь студентам 5 13.01.2012 13:35
Вычесление высокосного года Invader_13 Помощь студентам 0 20.10.2010 20:21