Форум программистов, компьютерный форум, киберфорум
Наши страницы

Delphi для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.71
Mariu
6 / 6 / 0
Регистрация: 29.12.2009
Сообщений: 21
#1

Ошибка: Statement expected but expression of type "TBitBtn" found - Delphi

31.12.2009, 20:22. Просмотров 2721. Ответов 6
Метки нет (Все метки)

В программе используется нижеследующий код, но он почему то ругается на строку Exit.
Ошибка: Statement expected but expression of type "TBitBtn" found
Если строку Exit убираю - вся программа работает отлично, кроме выхода из окна сообщения... зацикливается, если хочешь отмену ввода. А с ним ни в какую. В чём дело?


Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
procedure TForm1.B1Click(Sender: TObject);
var TXT:string;
    Num:real;
    N:integer;
begin
Memo1.Lines.clear;
For N:=1 to 7 Do
  Begin
    Repeat
      TXT:=InputBox('Ââîä âåðîÿòГ*îñòè îòêГ*Г§Г*','Ââåäèòå âåðîÿòГ*îñòü îòêГ*Г§Г* ÝëåìåГ*ГІГ* '+IntToStr(N)+#10#13'(Г§Г*ГЇГїГІГ*Гї - Г°Г*çäåëèòåëü äðîáè)'+ #10#13'(Äëÿ îòìåГ*Г» ââîäГ* - î÷èñòèòå ïîëå)','0');
      Num:=StrToFloatDef(TXT,0);
      If TXT = '' Then
        Begin
          MessageBox(handle,'Ââîä îòìåГ*ГҐГ*.','ÎòìåГ*Г*',mb_ok);
          Exit;
        End;
    Until Num <> 0;
    Dim[N]:=Num;
  End;
end;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.12.2009, 20:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка: Statement expected but expression of type "TBitBtn" found (Delphi):

Statement expected, but expression of type 'TMenuItem' found - Delphi
procedure TConverter.Edit1KeyPress(Sender: TObject; var Key: Char); begin // если введена цифра if ((Key &gt;= '0') AND (Key &lt;=...

Statement expected, but expression of type 'integer' found - Delphi
TLoadThread = class(TThread) protected procedure Execute; override; procedure SetMProgressJ; procedure ProgressInc; ...

Ошибка: "Statement expected, but 'PROCEDURE' found" - Delphi
Пытался написать новые строки для программы, наделал кучу ошибок, пытался исправить — не получилось. Удалил проблемный код, но все равно...

Вылазит ошибка "constant expression expected", не пойму в чем дело - Delphi
unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,...

Ошибка Statement expected but 'AND' found - Delphi
Пожалуйста,помогите найти ошибку!Программа пишет: Statement expected but 'AND' found вот код: procedure...

Ошибка: "Ordinal expression expected" - Delphi
Здравствуйте, помогите пожалуйста исправить код... в Lazarus IDE 1.6 выдает ошибку в 82-й строке: Ordinal expression expected, так же в...

6
Ztrel
445 / 219 / 14
Регистрация: 14.11.2009
Сообщений: 371
31.12.2009, 20:33 #2
попробуй вместо exit написать break - я так понял тебе нужен выход из цикла...

Добавлено через 2 минуты
Ой, извини, прочитал неправильно... Посмотри -

Цитата Сообщение от Mariu Посмотреть сообщение
procedure TForm1.B1Click(Sender: TObject);
Вместо B1Click должно было, по-моему стоять BitBtn1.Click...
Это логично - раз уж компилятор ругается на отсутствие данного элемента, надо его ввести...
0
Puporev
Модератор
52826 / 40637 / 13887
Регистрация: 18.05.2008
Сообщений: 94,267
31.12.2009, 20:47 #3
Попробуйте так.
Delphi
1
 TXT:=InputBox('Ввод вероятности отказа  Введите вероятность отказа Элемента'+IntToStr(N)+#10#13+'(запятая - разделитель дроби)'+ #10#13+'(Для отмены ввода - очистите поле) 0');
0
Mariu
6 / 6 / 0
Регистрация: 29.12.2009
Сообщений: 21
01.01.2010, 10:09  [ТС] #4
попробуй вместо exit написать break - я так понял тебе нужен выход из цикла...
На брейк не ругается, но и из цикла не выходит...

Вместо B1Click должно было, по-моему стоять BitBtn1.Click...
почему должно быть? если название кнопки B1?
И ведь она не ругается, если я уберу Exit...

Puporev, не спасает это -_- Всё равно ругается на exit (

Добавлено через 14 минут


Если я через свойства этой кнопки на вкладке Events (OnClick) щелкаю там дважды - что должно вызвать окно кода - он мне пишет "Cannot find implementation of method B1Click"

Добавлено через 46 минут
Создала по новой проект, внесла туда всё тоже самое с таким же названием кнопок, скопировала весь код туда... и не ругается... без понятия что было -_-
0
DannerDOS
Programmer
39 / 39 / 3
Регистрация: 07.04.2009
Сообщений: 187
01.01.2010, 11:48 #5
В случаях если вы уверены в синтаксической правельности написания кода программы и непосредственно в алгаритмической логике операторов, но все же транслятор выдает сообщения об ошибках, попробуйте пересохранить проект в иной каталог, после завершить текущий проект и открыть последний сохраненный, как следствие среда при сохранении фиксирует надстройки проекта в соответсвующих файлах и поновой загружает информацию о проекте при открытии.
Если все транслируеться нормально значит виновник: лазейки в среде, иначе кривые руки либо что еще хуже мышление.
0
Somebody
2791 / 1602 / 148
Регистрация: 03.12.2007
Сообщений: 4,200
Завершенные тесты: 1
01.01.2010, 21:04 #6
Цитата Сообщение от Mariu Посмотреть сообщение
ругается на строку Exit. Ошибка: Statement expected but expression of type "TBitBtn" found
А на форме случайно нет кнопки с именем 'Exit'? Тогда такая ошибка была бы вполне логична...
0
}{NiM
64 / 64 / 2
Регистрация: 25.11.2009
Сообщений: 283
02.01.2010, 00:12 #7
В общем то такая проблема у меня встречалась...
Попробуй выйти следующими путями
1) Используй Exit(0) или exit(1) - так программа передает работу системе (0)
2)Вставь вместо Exit универсальный Halt или, если будет ругаться Halt(0) - тоже в систему выкидывает.
3) Добавь перед var строку
Delphi
1
label 1;
далее вместо exit -goto 1; и 1: в конец процедуры.
получится что-то вроде
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
procedure TForm1.B1Click(Sender: TObject);
label 1;
var TXT:string;
    Num:real;
    N:integer;
begin
Memo1.Lines.clear;
For N:=1 to 7 Do
  Begin
    Repeat
      TXT:=InputBox('Ввод вероятности отказа','Введите вероятность отказа Элемента '+IntToStr(N)+#10#13'(запятая - разделитель дроби)'+ #10#13'(Для отмены ввода - очистите поле)','0');
      Num:=StrToFloatDef(TXT,0);
      If TXT = '' Then
        Begin
          MessageBox(handle,'Ввод отменен.','Отмена',mb_ok);
       goto 1;
        End;
    Until Num <> 0;
    Dim[N]:=Num;
  End;
1:
end;
0
02.01.2010, 00:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.01.2010, 00:12
Привет! Вот еще темы с ответами:

Ошибка "Ordinal expression expected" - Delphi
почему вылазит ошибка ? Ordinal expression expected и показывает вот на эту строку if (C in...

Табулирование символов при выводе и ошибка "Illegal type in Write/Writeln statement" - Delphi
Добрый день, дорогие форумчане. Столкнулся с такой проблемой... Хочу я к примеру создать таблицу массивов: Element-1 ...

Ошибка "BEGIN expected but END found" - Delphi
Unit1.pas(66): BEGIN expected but END found и вот сам код procedure TForm1.btn1Click(Sender: TObject); function...

Ошибка: "Identifier expected but Begin found" - Delphi
При компиляции выводит вот такую ошибку. Как решить эту проблему?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.