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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.05.2010, 02:58   #1
gallion
Новичок
Джуниор
 
Регистрация: 19.05.2010
Сообщений: 2
По умолчанию Анализатор!

Есть программа она по заданым граматикам анализирует строку! Но если я загружаю другую граматику из файла не происходит никоких изменений пока не перезайду! ПОМОГИТЕ ПЛЗ ОЧ НАДО!
procedure TForm1.FormCreate(Sender: TObject);
var j,k:integer;
begin
//при создании окна:
//загрузить правила в масив. и вывести их на экран.

j:=0; k:=1;

{$i-}

assignfile(f,'gramatika.txt');
reset(f);

{$i+}


repeat
j:=j+1;
readln(f,s);
for i:=1 to length(s) do
begin
if s[i]<>'|' then s1:=s1+s[i]
else
begin
gram[j,k]:=s1;
k:=k+1;
s1:='';
end;
end;
k:=1;
gr:=gr+1;
Memo2.lines.add(s);

until EOF(f);
closefile(f);



end;

procedure TForm1.Button2Click(Sender: TObject);
var firsttick:longint;
begin

label2.Caption:='Іде обробка!!!';
memo1.lines.Clear;
memo1.lines.add('Починаємо з y1');
slovo:=edit1.text;
n:=1;
posi:=1;
ura:=false;
p:=false;
repeat
//проверка первых букв в правилах
for j:=1 to 3 do
if (gram[n,j][1]<>#0) and (gram[n,j][1]=slovo[posi]) then
begin
//если совпала какая-то, то:
posi:=posi+1; //сдвинуть позицию в слове на 1
u:=true;
memo1.lines.add('Співпало -> '+ gram[n,j]);
//пауза для красоты...
firsttick:=gettickCount;
repeat
progressbar1.Position:=gettickcount-firsttick;
Application.ProcessMessages;
until gettickcount-firsttick > 1000;

break; //закончить цикл
end;

//если проверили и все совпало, то:
if (posi>length(slovo)) and u and (gram[n,j][3]=#0) then
begin
ura:=true;
p:=true;
end;

//если не совпали первые буквы, то выйти...
if u<>true then p:=true;

//если первая буква совпала в правиле, то проверяем вторую
if u and (not p) then
if gram[n,j][3]<>#0 then
//проверка - не правило ли это?
try
n:=strtoint(gram[n,j][3]);
except
if (gram[n,j][3]<>#0) and (gram[n,j][3]=slovo[posi]) then
begin
posi:=posi+1;
if posi-1>=length(slovo) then
begin
ura:=true;
p:=true;
end;
end
else //если вторая буква не совпала, то...

end;

u:=false;
until p;

if ura then
label2.Caption:='Введене слово є вивідним в даній граматиці > ' + Edit1.Text
else
begin
memo1.lines.Add('Неспівпало -> ' + gram[n,j]);
label2.Caption:='Введене слово не є вивідним в даній граматиці > ' + Edit1.Text;
end;

end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then Button2.Click;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
if OpenDialog.Execute then
begin

Memo2.Lines.LoadFromFile(OpenDialog .FileName);
Memo2.Lines.SaveToFile('gramatika.t xt');


end;


end;

procedure TForm1.N3Click(Sender: TObject);
begin
Close;
end;

end.
gallion вне форума Ответить с цитированием
Старый 19.05.2010, 09:03   #2
Z1000000
Форумчанин
 
Регистрация: 04.05.2010
Сообщений: 495
По умолчанию

Прикрепи весь проект.
Нажми на весы, поставь +
Для благодарностей : WebMoney WMR R252732729948
Z1000000 вне форума Ответить с цитированием
Старый 19.05.2010, 09:32   #3
gallion
Новичок
Джуниор
 
Регистрация: 19.05.2010
Сообщений: 2
По умолчанию вся прога!

http://files.mail.ru/JCWY6T
gallion вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Лексический анализатор С++ EniOk Помощь студентам 1 06.12.2009 15:43
морфологический анализатор Lavisa Помощь студентам 0 19.10.2009 23:11
Спектральный анализатор Vladya Общие вопросы Delphi 4 25.05.2009 11:16
Логический анализатор NieL Общие вопросы Delphi 1 10.03.2009 13:28
Анализатор формул KJIOyH Помощь студентам 1 05.11.2007 18:18