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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.03.2010, 17:55   #1
Lisёноk
Пользователь
 
Регистрация: 08.03.2010
Сообщений: 75
По умолчанию В чем состоит ошибка?

Здравствуйте. Написала программу по объектно-ориентированному программированию.

Код:

Код:
unit Microvoln;

interface

TYPE Tdir=(right,left);
     Tdir1=(gril, micro);

     TP=procedure of object;
     Tmicrovoln=CLASS

private

fPower:real; //ìîùíîñòü
fturn:Tdir; //ïîâîðîò äèñêà â ìèêðîâîëíîâêå
p:TP;
fonoff:boolean; //âêëþ÷åí,âûêëþ÷åí
ftemperature:real; //òåìïåðàòóðà
frejim :Tdir1; //ðåæèì ìèêðîâîëíîâîé ïå÷è

FUNCTION GetPower:REAL;

PROCEDURE TM(newTM:real); //ñìåíà òåìïåðàòóðû
FUNCTION GetTM:real;

PROCEDURE DR(newd:TDir); //ñìåíà íàïðàâëåíèÿ ïîâîðîòà äèñêà â ïå÷è
FUNCTION Getdir:Tdir;

FUNCTION GetOnoff:boolean;

FUNCTION GetDIR1: TDIR1;
PROCEDURE DR1(newd1:TDir1); //ñìåíà ðåæèìà

public

property Power:real read GetPower;
property temperature:real read GetTM WRITE TM;
property Turn:Tdir read Getdir write DR;
property onoff:boolean read GetOnoff;
property rejim:TDir1 read Getdir1 write DR1;
PROCEDURE Start; { çàïóñê }
PROCEDURE Stop; { îñòàíîâêà }
CONSTRUCTOR Create(PP:TP);
end;
implementation

uses windows;

//*************

CONSTRUCTOR TMicrovoln.Create(PP:TP);
begin
INHERITED Create;
fPower:=0;
fturn:=right;
p:=pp;
frejim:=gril;
fonoff:=false;
ftemperature:=0;

end;

//*************

PROCEDURE TMicrovoln.DR1(newd1:TDir1); //ñìåíà ðåæèìà
VAR oldftemperature:real;
BEGIN
IF (ftemperature=0) or (frejim=newd1) THEN
EXIT;
oldftemperature:=oldftemperature; //çàïîìíèëè òåêóùóþ òåìïåðàòóðó
TM(0); //îñòàíîâèëèñü
frejim:=newd1;
TM(oldftemperature) //óñòàíîâèëè ïðåæíåå çíà÷åíèå òåìïåðàòóðû
END;

//*************

FUNCTION TMicrovoln.Getdir1:Tdir1;
begin
result:=frejim
end;

//*************

FUNCTION TMicrovoln.GetPower:REAL;
begin
if fonoff then
Result:=temperature*1.01/100
else
Result:=0
end;

//*************

PROCEDURE TMicrovoln.TM(newTM:real); //ñìåíà òåìïåðàòóðû
VAR i:integer;
    s:INTEGER;
BEGIN
IF ftemperature-newTM>0 THEN
s:=-1
ELSE
s:=1;
FOR i:=1 TO ABS (ftemperature-newTM) DO
BEGIN
ftemperature:=ftemperature+s;
Sleep(70);
fPower:=GetPower;
p;
END
END;

//*************

FUNCTION TMicrovoln.GetTM:real;
begin
result:=ftemperature
end;

//*************

PROCEDURE TMicrovoln.DR(newd:TDir); //ñìåíà íàïðàâëåíèÿ ïîâîðîòà
VAR oldtemperature:real;
BEGIN
IF (ftemperature=0) or (fturn=newd) THEN
EXIT;
oldtemperature:=ftemperature; //çàïîìíèëè òåêóùóþ òåìïåðàòóðó
TM(0); //îñòàíîâèëèñü
fturn:=newd;
TM(oldtemperature) //óñòàíîâèëè ïðåæíåå çíà÷åíèå òåìïåðàòóðû
END;

//*************

FUNCTION TMicrovoln.Getdir:Tdir;
begin
result:=fturn
end;

//*************

FUNCTION TMicrovoln.GetOnoff:boolean;
begin
result:=fonoff
end;

//*************

PROCEDURE TMicrovoln.Start;
BEGIN
fonoff:=true;
TM(100)
END;

//*************

PROCEDURE TMicrovoln.Stop;
BEGIN
fonoff:=false;
TM(0);
p
END;

//*************

end.

В строчке
Код:
FOR i:=1 TO ABS (ftemperature-newTM) DO
выдает ошибку.
Пишет
Цитата:
[Warning] Microvoln.pas(69): Variable 'oldftemperature' might not have been initialized
Что необходимо исправить?
Я самый порочный ангел и самый безгрешный демон...
Lisёноk вне форума Ответить с цитированием
Старый 20.03.2010, 17:57   #2
NikLik
Форумчанин
 
Аватар для NikLik
 
Регистрация: 22.11.2007
Сообщений: 224
По умолчанию

Это не ошибка, а предупреждение.
А предупреждают вас о том, что значение переменной "oldftemperature" может быть не задано.
NikLik вне форума Ответить с цитированием
Старый 20.03.2010, 18:00   #3
Lisёноk
Пользователь
 
Регистрация: 08.03.2010
Сообщений: 75
По умолчанию

И что тогда делать?
Просто программа не компилируется из-за этого предупреждение.
Я самый порочный ангел и самый безгрешный демон...
Lisёноk вне форума Ответить с цитированием
Старый 20.03.2010, 18:06   #4
NikLik
Форумчанин
 
Аватар для NikLik
 
Регистрация: 22.11.2007
Сообщений: 224
По умолчанию

Попробуйте:
Код:
PROCEDURE TMicrovoln.DR1(newd1:TDir1); //ñìåíà ðåæèìà
VAR oldftemperature:real;
BEGIN
IF (ftemperature=0) or (frejim=newd1) THEN
EXIT;
oldftemperature := 0;
//oldftemperature:=oldftemperature; значение этой строки мне неясно.
TM(0);
frejim:=newd1;
TM(oldftemperature)
END;
NikLik вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В чем ошибка gheorge1989 Microsoft Office Access 8 27.10.2009 22:45
В чем ошибка... Эдвин Галстук Паскаль, Turbo Pascal, PascalABC.NET 3 25.10.2009 20:01
В чем ошибка? Smartbass Паскаль, Turbo Pascal, PascalABC.NET 1 28.05.2009 21:55
В чем ошибка? delphyok Паскаль, Turbo Pascal, PascalABC.NET 6 24.02.2009 23:33
В чём состоит эта ошибка и как её исправить? SViRT Помощь студентам 6 15.11.2008 12:35