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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.05.2008, 18:09   #1
GAGARIN-NEW
Познаю мир
Форумчанин Подтвердите свой е-майл
 
Аватар для GAGARIN-NEW
 
Регистрация: 05.10.2007
Сообщений: 387
Вопрос Видимо ошибка в функции(помогите исправить)

Написал функцию
Код:
function searchsize(const FileSize:integer): boolean ;
begin
if form1.CheckBox2.Checked then
begin
// åñëè  íå áîëüøå
if form1.ComboBox1.ItemIndex = 0 then
begin
if FileSize < form1.SpinEdit1.Value then result := true else result := false;
end
else
// åñëè íå ìåíüøå
if form1.ComboBox1.ItemIndex = 1 then
begin
if FileSize > form1.SpinEdit2.Value then result := true else result := false;
end
else
// åñëè Íå ìåíüøå , Íå áîëüøå
if form1.ComboBox1.ItemIndex = 2 then
begin
if (FileSize < form1.SpinEdit1.Value) and (FileSize > form1.SpinEdit2.Value) then
result := true else result := false;
end
else
// åñëè óêàçàòü òî÷íûé ðàçìåð
if form1.ComboBox1.ItemIndex = 3 then
if FileSize = form1.SpinEdit3.Value then result := true else result := false;
end
else result := true;
end;
Всё работает , но делфа выдаёт :
Цитата:
[Warning] Unit1.pas(141): Return value of function 'searchsize' might be undefined
Что я неправильно сделал?

Всем спасибо
---
GAGARIN-NEW вне форума Ответить с цитированием
Старый 06.05.2008, 18:26   #2
Dj_smart
Капсула от спама
Форумчанин
 
Аватар для Dj_smart
 
Регистрация: 04.03.2008
Сообщений: 779
По умолчанию

Из переводчика:
Возвращаемое значение функции 'searchsize', возможно, могло быть неопределено.
Но это лишь предупреждения, на таком уровне дельфи компилирует.
По моему, дело в другом...

Зы: А ты не смотрел что у тебя на 141-ой строчке?
Если данный ответ не столь конкретен, как Вы желаете его увидеть, возможно необходимо поразмыслить, стоит ли вопрос того, чтобы о нём спрашивать на форуме?
CncFiles.ru - бесплатный файловый хостинг
Dj_smart вне форума Ответить с цитированием
Старый 06.05.2008, 18:27   #3
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,307
По умолчанию

Если я не ошибаюсь Delphi говорит, что результат функции может быть (как бы это сказать) не присвоен.

Если так

Код:
If i = 0 then Result:=true
то выдаст предупреждение

если так
Код:
Result:=true
ни чего не выдаст.

Если код верный то это не страшно
Всё гениальное - просто!

Последний раз редактировалось Air; 06.05.2008 в 18:29.
Air вне форума Ответить с цитированием
Старый 06.05.2008, 18:38   #4
GAGARIN-NEW
Познаю мир
Форумчанин Подтвердите свой е-майл
 
Аватар для GAGARIN-NEW
 
Регистрация: 05.10.2007
Сообщений: 387
По умолчанию

Цитата:
Зы: А ты не смотрел что у тебя на 141-ой строчке?
141 строка - 30 строчка в приведённом выше коде.

Цитата:
Если код верный то это не страшно
Всё компилируется , работает, но возникла проблема :
При добавлении новой процедуры функции пусть даже TForm1.Button1Click делфи отказывается вменяемо отображать "подсказки" и прочее ... к примеру если ввести memo1. то обычно выпадает список свойств процедур функций ...у меня этот список перестал выпадать , хотя если ввожу всё от руки то работает.

Понимаю что это непашет среда Длефи , но думал может изза того что в начяле прописана эта функция ...

Цитата:
Result:=true
А смысл тогда в яункции если она всегда будет выдавать true ?
---
GAGARIN-NEW вне форума Ответить с цитированием
Старый 06.05.2008, 18:43   #5
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,307
По умолчанию

Цитата:
Всё компилируется , работает, но возникла проблема :
При добавлении новой процедуры функции пусть даже TForm1.Button1Click делфи отказывается вменяемо отображать "подсказки" и прочее ... к примеру если ввести memo1. то обычно выпадает список свойств процедур функций ...у меня этот список перестал выпадать , хотя если ввожу всё от руки то работает.
У меня всё работает, выдаёт предупреждение, но списки разворачивает.

Код:
procedure TForm1.Memo1Change(Sender: TObject);
begin
memo1.Lines
end;
на счёт
Result:=true
- это только пример.

P.S.
Сделал так

Код:
function searchsize(const FileSize:integer): boolean ;
begin
if 0=1 then
if FileSize = form1.SpinEdit3.Value then result := true else result := false;
end;
выдаёт предупреждение

Сделал так
Код:
function searchsize(const FileSize:integer): boolean ;
begin
if 0=0 then
if FileSize = form1.SpinEdit3.Value then result := true else result := false;
end;
не выдаёт предупреждение
Всё гениальное - просто!

Последний раз редактировалось Air; 06.05.2008 в 18:53.
Air вне форума Ответить с цитированием
Старый 06.05.2008, 18:56   #6
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,307
По умолчанию

Вам нужно сделать так
Код:
case form1.ComboBox1.ItemIndex of
0:
if FileSize = form1.SpinEdit3.Value then result := true else result := false;
1: ...
2: ...

...

else
result:=false;
end;
Всё гениальное - просто!
Air вне форума Ответить с цитированием
Старый 06.05.2008, 19:02   #7
GAGARIN-NEW
Познаю мир
Форумчанин Подтвердите свой е-майл
 
Аватар для GAGARIN-NEW
 
Регистрация: 05.10.2007
Сообщений: 387
Хорошо

Цитата:
Сообщение от Air Посмотреть сообщение
Вам нужно сделать так
Код:
case form1.ComboBox1.ItemIndex of
0:
if FileSize = form1.SpinEdit3.Value then result := true else result := false;
1: ...
2: ...

...

else
result:=false;
end;
Спасибо ! Совсем забыл про case.

PS
Код:
function searchsize(const FileSize:integer): boolean ;
begin
if form1.CheckBox2.Checked then
case form1.RadioGroup1.ItemIndex of
0: begin if FileSize < form1.SpinEdit1.Value then result := true else result := false; end;
1: begin if FileSize > form1.SpinEdit2.Value then result := true else result := false; end;
2: begin if (FileSize < form1.SpinEdit1.Value) and (FileSize > form1.SpinEdit2.Value) then
result := true else result := false; end;
3: begin if FileSize = form1.SpinEdit3.Value then result := true else result := false; end;
end
else result := true;
end;
То же самое предупреждение.
---

Последний раз редактировалось GAGARIN-NEW; 06.05.2008 в 19:14.
GAGARIN-NEW вне форума Ответить с цитированием
Старый 06.05.2008, 19:17   #8
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
Сообщение

То что Дельфи в какие-то моменты перестаёт отображать "подсказки и прочее", является индикатором того, что вы написали ошибки в коде.
Так что, это ваши действия вызывают такое поведение.

-----------------------------
То что Дельфи говорит вам [Warning] Unit1.pas(141): Return value of function 'searchsize' might be undefined , означет что надо в начале функции присвоить её какое-то значение.
Например:
Код:
function Stat(I :Integer):Boolean;
begin
 result := false; // вот это нужно сделать вначале, при таком сообщении
 case I of
0: result := true;
1: result := false;
 end
end;
----------------------------
___________________________________ ______________________________
Такая реакция Дельфи очень полезна.

Последний раз редактировалось Alter; 06.05.2008 в 19:21.
Alter вне форума Ответить с цитированием
Старый 06.05.2008, 19:37   #9
GAGARIN-NEW
Познаю мир
Форумчанин Подтвердите свой е-майл
 
Аватар для GAGARIN-NEW
 
Регистрация: 05.10.2007
Сообщений: 387
По умолчанию

Спасибо ! Присвоение в начяле функции значения Rеsult помогло .

Цитата:
То что Дельфи в какие-то моменты перестаёт отображать "подсказки и прочее", является индикатором того, что вы написали ошибки в коде.
Так что, это ваши действия вызывают такое поведение.
Но при этом всё компилируется и правильно работает, в чём же может быть проблема?
---
GAGARIN-NEW вне форума Ответить с цитированием
Старый 06.05.2008, 19:44   #10
Карась
Участник клуба
 
Аватар для Карась
 
Регистрация: 26.10.2007
Сообщений: 1,244
По умолчанию

А можно взглянуть на код целиком? (в архиве)
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...
Карась вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При переключении между чекбоксами - ошибка Stack overflow. Как исправить эту ошибку? SkAndrew Общие вопросы Delphi 5 26.08.2008 21:32
Ошибка C2248. Помогите исправить Ascor Общие вопросы C/C++ 2 03.06.2008 00:56
ошибка в inline функции Tan4ik Помощь студентам 2 04.05.2008 21:26
Видимо очередной вопрос по БД... Amaranth Помощь студентам 1 16.12.2007 00:56
Ошибка при декларировании функции в Firebird из UDF shurik_7866 БД в Delphi 1 30.07.2007 08:55