Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.05.07;
Скачать: CL | DM;

Вниз

Ошибка идентификатора ComboBox   Найти похожие ветки 

 
psvitov ©   (2006-04-19 08:59) [0]

Привет всем!!

Помогите начинающему

Задача: нужно из выпадающего списка выбрать пункт, при этом выполняется определенное действие и вывести результат на экран. Нужно использовать ComboBox. Сам код:

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, Menus, StdCtrls, jpeg, ExtCtrls;

type
 TForm1 = class(TForm)
   MainMenu1: TMainMenu;
   N1: TMenuItem;
   N2: TMenuItem;
   ComboBox1: TComboBox;
   Label2: TLabel;
   Image1: TImage;
   Image2: TImage;
   Label3: TLabel;
   procedure ComboBox1Change(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
 y: real;
 
implementation

{$R *.dfm}

procedure TForm1.ComboBox1Change(Sender: TObject);
begin

ComboBox1.items.add("A = -4");
ComboBox1.items.add("A = -1");
ComboBox1.items.add("A = 3");
ComboBox1.ItemIndex:=1;

end;
begin
 case ComboBox1.ItemIndex of
 1: y:= -4+ln(1*1);
 2: y:= -1+ln(1*1);
 3: y:= 3+ln(1*1);
 end;
label3.caption:=FloatToStrF(y, ffFixed, 6, 3);

end.

Ошибку выдает в операторе case..of пишет типа Undeclared identifier,
назначаешь - вообще не работает.
Подскажите в чем ошибка.


 
Ega23 ©   (2006-04-19 09:02) [1]

ComboBox1.ItemIndex:=1;

end;
begin

case ComboBox1.ItemIndex of
1: y:= -4+ln(1*1);
2: y:= -1+ln(1*1);


begin - end зачем?


 
Юрий Зотов ©   (2006-04-19 09:06) [2]

> Подскажите в чем ошибка.

Первая ошибка - в незнании синтаксиса языка Object Pascal (пара begin-end находится непонятно где).

Вторая и третья ошибки проявятся после запуска программы при попытке что-то выбрать в комбобоксе.


 
psvitov ©   (2006-04-19 09:08) [3]

Взял с примерного кода, только с ListBox


 
psvitov ©   (2006-04-19 09:14) [4]

Первую ошибку подправил,

Выдал ошибку "Declaration expected"


 
Gydvin ©   (2006-04-19 09:19) [5]

procedure TForm1.Button1Click(Sender: TObject);
begin
ComboBox1.items.add("A = -4");
ComboBox1.items.add("A = -1");
ComboBox1.items.add("A = 3");
ComboBox1.ItemIndex:=1;
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
case ComboBox1.ItemIndex of
0: y:= -4+ln(1*1);
1: y:= -1+ln(1*1);
2: y:= 3+ln(1*1);
end;
label3.caption:=FloatToStrF(y, ffFixed, 6, 3);

end;


 
Юрий Зотов ©   (2006-04-19 09:20) [6]

> psvitov ©   (19.04.06 09:14) [4]

> Первую ошибку подправил

Неправда.

Первая ошибка состояла в незнании синтаксиса языка Object Pascal. Чтобы ее подправить, надо брать книгу и учить синтаксис, а не пытаться править код наугад, "методом научного тыка".


 
Gydvin ©   (2006-04-19 09:23) [7]

ComboBox1.ItemIndex:=1;

TO

ComboBox1.ItemIndex:=0;


 
psvitov ©   (2006-04-19 09:29) [8]


procedure TForm1.Button1Click(Sender: TObject);
begin
ComboBox1.items.add("A = -4");
ComboBox1.items.add("A = -1");
ComboBox1.items.add("A = 3");
ComboBox1.ItemIndex:=1;
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
case ComboBox1.ItemIndex of
0: y:= -4+ln(1*1);
1: y:= -1+ln(1*1);
2: y:= 3+ln(1*1);
end;
label3.caption:=FloatToStrF(y, ffFixed, 6, 3);

end;


Не помогает


 
Gydvin ©   (2006-04-19 09:36) [9]

смотри [6]

Тоесть проверь все

procedure  blabla

  begin

  end;



Когда вручную правил мог запортачить, или иногда бывает глюк у делфей, новые процедуры почемуто вставляет в середину старых(((


 
Ega23 ©   (2006-04-19 09:45) [10]


> или иногда бывает глюк у делфей


У Делфи глюков практически нет. Глюки, как правило, в голове разработчика.
Вот такое вот восьмилетнее наблюдение...


 
psvitov ©   (2006-04-19 09:45) [11]

замена 0 на 1 результата не дает

в procedure ничего не менял, при запуске пректа сразу выдает ошибку на операторе case..of


 
psvitov ©   (2006-04-19 09:47) [12]

Если вместо ComboBox1.ItemIndex задаешь другую описанную переменную,  выводит, но только не пересчитывает согласно формуле в case..of


 
Gydvin ©   (2006-04-19 09:49) [13]

Целиком всю юниту выложи


 
tesseract ©   (2006-04-19 09:49) [14]

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
y:=0;
case ComboBox1.ItemIndex of
0: y:= -4+ln(1*1);
1: y:= -1+ln(1*1);
2: y:= 3+ln(1*1);
else
y:=0;  

end;
try
label3.caption:=FloatToStrF(y, ffFixed, 6, 3);
except
on e:exception do label3.caption:=e.message;
end;

end;


 
psvitov ©   (2006-04-19 09:51) [15]

Вот что на данный момент:

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, Menus, StdCtrls, jpeg, ExtCtrls;

type
 TForm1 = class(TForm)
   MainMenu1: TMainMenu;
   N1: TMenuItem;
   N2: TMenuItem;
   ComboBox1: TComboBox;
   Label2: TLabel;
   Image1: TImage;
   Image2: TImage;
   Label3: TLabel;
   procedure ComboBox1Change(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
 y: real;

implementation

{$R *.dfm}

procedure TForm1.ComboBox1Change(Sender: TObject);

begin
ComboBox1.items.add("A = -4");
ComboBox1.items.add("A = -1");
ComboBox1.items.add("A = 3");
ComboBox1.ItemIndex:=0;
end;

case ComboBox1.ItemIndex of
 0: y:= -4+ln(1*1);
 1: y:= -1+ln(1*1);
 2: y:= 3+ln(1*1);
end;
label3.caption:=FloatToStrF(y, ffFixed, 6, 3);

end.


 
Gydvin ©   (2006-04-19 09:54) [16]


> Ega23 ©   (19.04.06 09:45) [10]


допустим правишь, что либо в обработчике, нажимаешь F9, ага компилится, кидаешь буттон, два раза тыркаешь, пишешь туда что либо, компилить, а он нифига. Смотришь, и видишь такую ерунду. Такой глюк возникает очень редко, но бывает


> psvitov ©   (19.04.06 09:45) [11]


Целиком всю юниту выложи


 
psvitov ©   (2006-04-19 09:55) [17]

else
y:=0;


Не выходит каменный цветок


 
Ega23 ©   (2006-04-19 09:55) [18]


> Вот что на данный момент:


Слушай, начни с прочтения книжки. Как процедуры, функции пишутся. Правила синтаксиса. И т.д.

Тебе это уже несколько раз сказали; неужели трудно почитать? Неужели это сложнее, чем в слепую тыкаться и абсолютно идиотские вопросы задавать. Которые даже не из раздела "Чайник спрашивает", они на уровне десятилетнего пацана.


 
Gydvin ©   (2006-04-19 09:58) [19]

procedure TForm1.ComboBox1Change(Sender: TObject);

begin
ComboBox1.items.add("A = -4");
ComboBox1.items.add("A = -1");
ComboBox1.items.add("A = 3");
ComboBox1.ItemIndex:=0;
end;

case ComboBox1.ItemIndex of
0: y:= -4+ln(1*1);
1: y:= -1+ln(1*1);
2: y:= 3+ln(1*1);
end;
label3.caption:=FloatToStrF(y, ffFixed, 6, 3);


это что??

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, StdCtrls, jpeg, ExtCtrls;

type
TForm1 = class(TForm)
  MainMenu1: TMainMenu;
  N1: TMenuItem;
  N2: TMenuItem;
  ComboBox1: TComboBox;
  Label2: TLabel;
  Image1: TImage;
  Image2: TImage;
  Label3: TLabel;
Button1:tbutton;
procedure Button1Click(Sender: TObject);
  procedure ComboBox1Change(Sender: TObject);
private
  { Private declarations }
public
  { Public declarations }
end;

var
Form1: TForm1;
y: real;

implementation

{$R *.dfm}

procedure TForm1.ComboBox1Change(Sender: TObject);

begin
case ComboBox1.ItemIndex of
0: y:= -4+ln(1*1);
1: y:= -1+ln(1*1);
2: y:= 3+ln(1*1);
end;
label3.caption:=FloatToStrF(y, ffFixed, 6, 3);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ComboBox1.items.add("A = -4");
ComboBox1.items.add("A = -1");
ComboBox1.items.add("A = 3");
ComboBox1.ItemIndex:=0;
end;

end.


 
psvitov ©   (2006-04-19 09:59) [20]

Читал, и не раз, если бы все в порядке было, стал бы я сюда писать


 
Ega23 ©   (2006-04-19 10:04) [21]


> Читал, и не раз


Незаметно.


 
Quattro ©   (2006-04-19 11:10) [22]

psvitov ©   (19.04.06 09:51) [15]

Вот что на данный момент:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, StdCtrls, jpeg, ExtCtrls;

type
TForm1 = class(TForm)
  MainMenu1: TMainMenu;
  N1: TMenuItem;
  N2: TMenuItem;
  ComboBox1: TComboBox;
  Label2: TLabel;
  Image1: TImage;
  Image2: TImage;
  Label3: TLabel;
  procedure ComboBox1Change(Sender: TObject);
private
  { Private declarations }
public
  { Public declarations }
end;

var
Form1: TForm1;
y: real;

implementation

{$R *.dfm}

procedure TForm1.ComboBox1Change(Sender: TObject);

begin
ComboBox1.items.add("A = -4");
ComboBox1.items.add("A = -1");
ComboBox1.items.add("A = 3");
ComboBox1.ItemIndex:=0;
end;

case ComboBox1.ItemIndex of
0: y:= -4+ln(1*1);
1: y:= -1+ln(1*1);
2: y:= 3+ln(1*1);
end;
label3.caption:=FloatToStrF(y, ffFixed, 6, 3);

end.

Однако, подозрительно бросаются в глаза сии два оператора...быть может в них дело?:)


 
Quattro ©   (2006-04-19 11:11) [23]

Да и вообще как то не красиво выглядит код:)


 
Gydvin ©   (2006-04-19 11:20) [24]

И чем же они подозрительны?

А вобще, сдается мне, что получит он там рекрусию


 
ЮЮ ©   (2006-04-19 11:29) [25]


> А вобще, сдается мне, что получит он там рекрусию

Если когда нибудь запустит :)

В [15]  он приводит всё тот же ломаный код, что и в сабже, отбросив твой намек в [5]



Страницы: 1 вся ветка

Текущий архив: 2006.05.07;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.038 c
8-1134409438
VasRoG
2005-12-12 20:43
2006.05.07
Загрузка bmp


2-1145247461
vodvorezlaya
2006-04-17 08:17
2006.05.07
HANDLE?


2-1145531259
fast2
2006-04-20 15:07
2006.05.07
Можна ли сделать текст в диалоге (например MessageDLG) цветным?


15-1144660757
Kolan
2006-04-10 13:19
2006.05.07
Режим реального времени в XP sp 2.


1-1143728730
kyn66
2006-03-30 18:25
2006.05.07
Добавить информацию в EXE-шник