|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Проблема с объявлением меток
Добрый день всем. Никак не могу понять почему Delphi выкидывает сообщение
[Error] Unit1.pas(28): Label declared and referenced, but not set: 'yzi5' Хотя метка в коде есть. Да, я знаю что использование GoTo не желательно, но я не знаю что тут можно еще применить. Вот кусок кода Код:
//íà÷èíàåì àíàëèç ðåçóëüòàòîâ if c1>=5 then begin GoTo yzi5; end else ShowMessage('Íåèçâåñòíîå çàáîëåâàíèå'); end; if c2>=5 then begin GoTo yzi6; end else begin ShowMessage('Íåèçâåñòíîå çàáîëåâàíèå'); end; //çàêîí÷èëè àíàëèç ðåçóëüòàòîâ //íà÷àëî ÓÇÈ ïî÷åê 5 áëîê yzi5: begin d1:=2; if MessageDlg('Åñòü ëè ðàñøèðåíèå ëîõàíîê ïî÷åê?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then d1:=d1+1; if MessageDlg('Åñòü ëè êàðáóíêóë ïî÷êè?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then d1:=d1+1; if MessageDlg('Åñòü ëè ïàðàíåðôàëüíûé àáñöåñ?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then d1:=d1+1; //çàêîí÷èëè ÓÇÈ ïî÷åê 5 áëîê Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Label1: TLabel; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; b1,b2,c1,c2,d1,d2,e1: integer; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); label mocha,pieloefrit,glomerylonefrit,yzi5,yzi6,rengen; //îáúÿâëÿåì ïåðåõîäû ê òî÷êàì //ïåðåáèðàåì îáùèå âîïðîñû begin if MessageDlg('Åñòü áîëè â ïîÿñíèöå?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then b1:=1; b2:=1; if MessageDlg('Åñòü ëè ïîâûøåííîå ÀÄ?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then b1:=b1+1; b2:=b2+1; if MessageDlg('Åñòü ëè áîëè â îáëàñòè æèâîòà?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then b1:=b1+1; if MessageDlg('Åñòü ëè îòåêè êîíå÷íîñòåé?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then b1:=b1+1; b2:=b2+1; if MessageDlg('Åñòü ëè îáùàÿ ñëàáîñòü?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then b1:=b1+1; b2:=b2+1; if MessageDlg('Åñòü ëè òîøíîòà?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then b1:=b1+1; b2:=b2+1; if MessageDlg('Åñòü ëè íîñîâûå êðîâîòå÷åíèÿ?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then b2:=b2+1; if MessageDlg('Åñòü ëè ïîâûøåííàÿ ñóõîñòü êîæè?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then b2:=b2+1; //çàêîí÷èëè ïåðåáîð îáùèõ âîïðîñîâ //äåëàåì àíàëèç ïîñëå îòâåòîâ íà îáùèå âîïðîñû if b1>=4 then begin GoTo mocha; end else if b2>=4 then begin GoTo mocha; end else begin ShowMessage('Âñå â íîðìå'); end; //çàêîí÷èëè àíàëèç îòâåòîâ íà îáùèå âîïðîñû //íà÷èíàåì ïåðåáîð âîïðîñîâ î ìî÷å mocha: begin c1:=1; c2:=1; if MessageDlg('Ïîâûøåííûé óðîâåíü ëåéêîöèòîâ â ìî÷å?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then c1:=c1+1; c2:=c2+1; if MessageDlg('Ïîâûøåí óðîâåíü áåëêà â ìî÷å?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then c1:=c1+1; c2:=c2+1; if MessageDlg('Åñòü ëè áàêòåðèè â ìî÷å?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then c1:=c1+1; if MessageDlg('Åñòü ëè â ìî÷å ýðèòðîöèòû?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then c2:=c2+1; end; //çàêîí÷èëè ïåðåáîð âîïðîñîâ î ìî÷å //íà÷èíàåì ïåðåáîð âîïðîñîâ î êðîâè begin if MessageDlg('Ïîâûøåííûé óðîâåíü ëåéêîöèòîâ â êðîâè?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then c1:=c1+1; if MessageDlg('Ïîâûøåí óðîâåíü áåëêà â êðîâè?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then c2:=c2+1; end; //çàêîí÷èëè ïåðåáîð âîïðîñîâ î êðîâè //íà÷èíàåì àíàëèç ðåçóëüòàòîâ if c1>=5 then begin GoTo yzi5; end else ShowMessage('Íåèçâåñòíîå çàáîëåâàíèå'); end; if c2>=5 then begin GoTo yzi6; end else begin ShowMessage('Íåèçâåñòíîå çàáîëåâàíèå'); end; //çàêîí÷èëè àíàëèç ðåçóëüòàòîâ //íà÷àëî ÓÇÈ ïî÷åê 5 áëîê yzi5: begin d1:=2; if MessageDlg('Åñòü ëè ðàñøèðåíèå ëîõàíîê ïî÷åê?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then d1:=d1+1; if MessageDlg('Åñòü ëè êàðáóíêóë ïî÷êè?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then d1:=d1+1; if MessageDlg('Åñòü ëè ïàðàíåðôàëüíûé àáñöåñ?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then d1:=d1+1; //çàêîí÷èëè ÓÇÈ ïî÷åê 5 áëîê //íà÷àëî àíàëèçà ðåçóëüòàòîâ if d1>=5 then if MessageDlg('Îáíàðóæåí ïèåëîíåôðèò. Ïîêàçàòü èíôîðìàöèþ?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then ShowMessage('?'); end else begin ShowMessage('?'); end; //êîíåö àíàëèçà ðåçóëüòàòîâ //íà÷àëî ðåíãåíà rengen: e1:=3; if MessageDlg('Åñòü ëè ñäàâëåíèå ìî÷åâûõ ïóòåé?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then e1:=e1+1; if MessageDlg('Åñòü ëè íàðóøåíèå ÷àøå÷íî-ëîõàíî÷íîé ñèñòåìû?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then e1:=e1+1; if MessageDlg('Åñòü ëè îïóõîëü?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then e1:=e1+1; if MessageDlg('Åñòü ëè êàìåíü?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then e1:=e1+1; //êîíåö ðåíãåíà //íà÷èíàåì àíàëèç ðåçóëüòàòîâ if e1>=5 then ShowMessage('Íåèçâåñòíîå çàáîëåâàíèå'); end else begin ShowMessage('Íåèçâåñòíîå çàáîëåâàíèå'); //çàêîí÷èëè àíàëèç ðåçóëüòàòîâ //íà÷àëî ÓÇÈ ïî÷åê 6 áëîê yzi6: d2:=2; if MessageDlg('Åñòü ëè óïëîòíåíèå òêàíåé ïî÷êè?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then d2:=d2+2; if MessageDlg('Åñòü ëè óìåíüøåíèå ðàçìåðîâ ïî÷êè?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then d2:=d2+3; //çàêîí÷èëè ÓÇÈ ïî÷åê 6 áëîê //íà÷èíàåì àíàëèç ðåçóëüòàòîâ //çàêîí÷èëè àíàëèç ðåçóëüòàòîâ end; end; end. |
#2
|
||||
|
||||
Цитата:
У тебя там напутана структура (как минимум один лишний end) из-за чего метод Button1Click заканчивается раньше чем ты считаешь, вот компилятор и не видит этой метки. Отформатируй красиво код и сам в этом убедишься. И вообще старайся сразу писать код уже форматированным. |
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
snr93 (19.12.2013)
|
#3
|
|||
|
|||
Цитата:
Вот в соседней ветке как раз задал вопрос, зачем используете GoTo Подскажу свой вектор движения, чтобы его (оператор) не использовать: 1. Флаги, передаваемые параметрами функциям. В качестве флага использую переменные и параметры типа Boolean, хотя можно и тот же integer (0 или 1 вместо False или True). 2. Собственно сами функции. Мало того, функция ответом может вернуть результат своего деяния, откуда мы примем решение, что делать дальше и куда идти. Ну это можно долго расписывать, хоть еще книгу "Все о Delphi" напиши. ОФФ Последний раз использовал переходы по лейбакам в ассемблере, да и те были полуусловными - rjmp в условии |