Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.15;
Скачать: [xml.tar.bz2];




Вниз

Помогите новичку 


Zeerov   (2002-04-02 16:59) [0]

Добрые люди помогите.Не получается организовать двухступенчатый диалог.Одноступенчатые работают а вот двух у меня не получаются.Вот пример программы:
unit NICK;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, jpeg;
type
TForm1 = class(TForm)
Shape1: TShape;
Shape2: TShape;
Shape3: TShape;
Shape4: TShape;
Shape5: TShape;
Shape6: TShape;
Shape7: TShape;
Shape8: TShape;
Timer1: TTimer;
Button1: TButton;
Edit1: TEdit;
Label1: TLabel;
Timer2: TTimer;
Shape9: TShape;
Timer3: TTimer;
Shape10: TShape;
Image1: TImage;
procedure Button1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
procedure Timer3Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
FlagT:Boolean=false;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
f:boolean;
begin
s:=Edit1.Text;
f:=false;
Shape7.Height:=105;
Shape8.Height:=105;
Timer1.Enabled:=True;
Timer2.Enabled:=True;
Timer3.Enabled:=True;
if s="привет!" then
begin
f:=true;
Label1.Caption:="Привет";
end
else
if (length(s)>0)and(s[length(s)]="!")then
begin
Label1.Caption:="Ну-Ну..";
f:=true;
end;
if s="как тебя зовут?" then
begin
Label1.Caption:="Гена";
f:=true;
end;
if pos("а я ",s)>0 then
begin
Label1.Caption:="А у меня 64 Мб оперативной памяти!";
f:=true;
end;
if s="где можно купить Томагочи?"then
begin
flagT:=true;
Label1.Caption:="В магазине <<Детский Мир>>";
end;
if (s="сколько она стоит?") and (flagT)
then
begin
Label1.Caption:="Двадцать пять монет";
flagT:=false;
end;
if f=false then
begin
Label1.Caption:="Ась?";
Shape9.Visible:=True;
Shape10.Visible:=True;
Timer3.Enabled:=True;
Image1.Visible:=True;
end;
Edit1.Text:="";
Edit1.SetFocus;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Shape7.Height:=57;
Shape8.Height:=57;
Timer1.Enabled:=False;
end;
procedure TForm1.Timer2Timer(Sender: TObject);
begin
Label1.Caption:="";
Timer2.Enabled:=False;
end;
procedure TForm1.Timer3Timer(Sender: TObject);
begin
Shape9.Visible:=False;
Shape10.Visible:=False;
Timer3.Enabled:=False;
Image1.Visible:=False;
end;
end.
Заранее признателен.



Song   (2002-04-02 17:45) [1]

И как в этом разобраться? Вы скажите, где ошибка происходит хотя бы предположительно на Ваш взгляд.



Shaman_Naydak   (2002-04-02 20:12) [2]

Я так понимаю, что у тебя не ошибка, а отсутствие умения построить диалог..
Ну что тебе посоветовать. построй простейший автомат состояний..
то есть сперва на бумаге нарисуй граф состояний.
вариант вопроса - ответ, а затем пронумеруй каждое состояние..
Заведи переменную status и при каждом изменении присваивай ей новое значение..
а проверка у тебя будет, грубо говоря,
if (status = 3) and (s = "трах-тарарах) then
status:=33;

Суть идеи ясна?




Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.15;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.72 MB
Время: 0.02 c
1-46408           BofA                  2002-04-02 15:29  2002.04.15  
Как прочитать строку из файла


3-46287           gimbat                2002-03-25 22:47  2002.04.15  
D5, MS SQL7


3-46265           XanderMan             2002-03-25 21:35  2002.04.15  
Извлечение дня, месяца и года из поля типа Date в InterBase


3-46237           UncleRu               2002-03-16 19:17  2002.04.15  
кэширование данных связанных таблиц


7-46523           EskimOS               2002-01-21 10:38  2002.04.15  
Работа с большим файлом...