![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Интерпритатор языка или что-то в этом роде. [D5, D6, D7]
S0N1K © (2004-10-08 21:00:00)Как бы объяснить то, что я хочу сделать?... Надо сделать интерпритатор нес-ких стандартных команд(такой маленький язык).
Пишем (на русском) текст, а прога берёт из него команды и т.п.
и выполняет.
Например пишем:
объект перемещение на 2 вверх
объект перемещение на 3 влево
объект перемещение на 2 вправо
А в рез-те на клеточном поле показано куда переместился наш объект.
При этом могут быть и циклы, условия...
Если меня кто-то понял, то подскажите с какой стороны подступиться к решению.
ЮрийК (2004-10-13 19:22:00) [21]Тем, кто интересуется Delphi Grammar :
http://groups.yahoo.com/group/DelphiGrammar/
DiamondShark (2004-10-13 13:14:00) [22]Весело тут у вас ;)
П7 (2004-10-13 12:50:00) [23]
> Для меня это лишь бессилие сказать по теме.
Да это именно бессилие сказать по теме. Ибо я не хочу говорить что-либо о том, в чём не совсем разбираюсь. Я лучше послушаю. А вот ты пытаешься высказываться. А зря. Код у тебя отвратительный.
И я не вижу ничего унизительного в том, что мне нечего всказать по теме - я учусь, пытаюсь узнать больше и призываю не тратить время на глупую болтовню и приперательства. А вместо этого дать народу знания... (:
Defunct (2004-10-13 12:22:00) [24]> А вы из архива то ENLIS.ZIP распаковали?
> как указано в пункте "устанавка" в enlis.htm
Да, разумеется. Прочитал ваши инструкции и сделал как там написано, но увы результат я описал [35, 37]. Получить что-то большее чем описано в [37] не удалось.
programania (2004-10-13 11:29:00) [25]>Юрий Зотов
К сожалению ваша программа при трансляции
не нашла TryStrToInt наверно от того что у меня D5
буду искать D8 как у вас.
Вот добавил как понял указанные команды и обьекты
Как и ожидал: около часа тупой долбежки по клавишам.
и еще более тупой отладки.
Такие глупые и бесполезные программы для меня мучительны.
Не буду больше их делать.
Однако этот разговор вдохновил меня на написание
простого и ограниченного интерпертатора Pascalя
для перепутывания строк в программе чтоб она нормально
работала но никто не мог понять как, даже по исходнику
но это не час а на неделю. Вот это для меня интересно,
это и буду теперь делать.
А вам предлагаю смотреть на вещи шире ведь любая теория
лишь частный случай более общей, например
интерпретатор находит в тексте знакомые слова а незнакомые
считает параметрами и использует их при выполнении,
но ведь зрение и слух делают то же самое, только
сравнение не точное. Может и в интерпритаторе допускать
отличия части слов и запоминать их чтоб при правильном
результате уже точно сравнивать такие команды и т.д.
Что вы будете делать для этого расширять или переделывать?
А если альтернативное выполнение одной из команд
в зависимости от применения многих запомненных отличий.
А построить дерево с альтернативами для входа и выхода
А связать альтернативы а потом еще все это перестраивать
при поступлении новых команд,
и ведь это не теория, это жизнь.
>В Вашем же варианте добавление нового объекта или новой команды приведет к полной переделке всего алгоритма и, соответсвенно, всей программы.
Вы меня совсем запутали своим красноречием:
добавление почти одинаковых строк: это переделка или расширение
или еще слово какое придумаете.
>но если отформатировать Ваш код так, как это принято делать
Нельзя так тупо подходить к оформлению кода.
Это процесс гораздо более творческий и похож на живопись.
оформление должно помогать понимать, дать возможность
обозреть программу. Для этого вспомогательные части нужно сжимать
если можно до 1 строки, а важные выделять, возможно даже в процедуры
A пример сжат для форума, обычно пишу более свободно.
>а кто такого опыта все же не имеет. Хотя почему-то о нем говорит.
Ваши программы я со своим модемом вряд ли когда увижу
а мои пожалуста 3*800kb programania.com/ENJOL.ZIP ENLIS.ZIP KADR.EXE
не хотите смотреть, тогда знайте что одна и таже ENLIS.exe
приводит в действие >10 АРМом с сотнями входных и выходных форм
и при этом никаких изменений в программе вообще не надо делать.
Напишите какие интерпритаторы вы сделали, причем лично
без "команды", как я написал в [32]
Или способны только на такое:
>насчет сложных проектов пальцы гнуть.
>детишки из школьного кружка программирования.
>образумить бедного студента,
>ни один человек не может быть таким твердолобым,
>Уймись, дите неразумное. На кого батон крошишь?
До такого я никогда не унижусь.
Для меня это лишь бессилие сказать по теме.
>Скриншот могу прислать
Если он сильно отличается от Delphi и <200k дайте ссылку.
>Так что в рамках тех самых 80-90% задача все же решаемая.
Согласен. О 100% я как раз и не говорил
Кстати, вот фирма Промт долго пыталась сделать перевод
по строгим правилам, а недавно прочел в газете что
она бросила это безнадежное дело и решила просто хранить
готовые фрагменты в базе переводов. Так может и для переносчика
просто выделить все переносы из какой-нибудь "библиотеки в кармане"
и использовать сразу готовые и правил никаких не надо.
>Почему бы и Вам не попробовать, раз эта тема Вам интересна?
Пробовал, пробую и буду пробовать.
>Откуда же тогда такие утверждения?
На основании личного опыта написания других интерпритаторов.
Это все обработка текстов: приемы одного подходят другому.
Кстати, свести сложную обработку к механической работе это искусство.
>Ну так назовите тех, кого поддерживаете. Сколько их? Если честно?
Примерно 15 человек разработчиков и пользователей лично регулярно.
А уже они поддерживают других. Но при чем тут все это?
>Defunct ©
>При первом запуске появилась табличка:
>M: не найден, содаю D:\.....\...\
А вы из архива то ENLIS.ZIP распаковали?
как указано в пункте "устанавка" в enlis.htm
Вот контрольный пример к программе
Его нужно записать в текстовый файл test.txt
объект перемещение на 2 вверх;
объект перемещение на 4 влево
<текстовое поле>
<удалить>
<создать>
<изменить текст> на другой тест
объект перемещение на 2 вниз
<круг>
<изменить радиус> на 100
объект перемещение на 4 вправо
стой
А вот сама глупая программа
program Project1;
uses Graphics, forms, SysUtils, windows, Classes;
var
i,pNA,r,d,h,w,x,y,dx,dy,z:integer;b:graphics.tBitmap;t:textFile;
s,txt:string;ce:tCanvas; stop,error,est,hide:boolean;wo:char;
FUNCTION C(s:string):string; var i:integer; begin
result:='0';
for i:=1 to length(s) do if s[i]in['0'..'9']then result:=result+s[i] else break;
end;
PROCEDURE SS(n:string; var dy:integer; m:integer);
begin
dy:=m*pNA;ce.textOut(100,20,'Перемещение '+n+' на '+intToStr(m*dy)+' ')end;
PROCEDURE ssp;
begin ce.textOut(100,20,'Выполнила команду '+s+' ')end;
FUNCTION e(ps:string):boolean;begin e:=pos(ps,s)>0 end;
BEGIN
h:=screen.height; w:=screen.width; x:=w div 2; y:=h div 2; r:=h div 10; d:=r;
ce:=tCanvas.create; ce.Handle:=GetDC(0);
b:=Graphics.tBitMap.create;b.width:=w; b.height:=h;
b.canvas.copyRect(rect(0,0,w,h),ce,rect(0,0,w,h));
assignFile(t,'test.txt'); reset(t);
ce.font.size:=18;ce.font.color:=$FF; ce.font.style:=[fsBold];
ce.Pen.color:=$ff; ce.Pen.width:=4;
wo:='k'; est:=true; stop:=false; txt:='Текст для начала';
while not eof(t)and not stop do begin
readln(t,s);
ce.Draw(0,0,b);
dx:=0; dy:=0; error:=false;
i:=pos(' на ',s);if i>0 then pNA:=StrToInt(c(trim(copy(s,i+4,255))));
if e('переместить')or e('перемещение') then begin
if e('вверх') then ss('вверх',dy,-1) else
if e('вниз') then ss('вниз',dy,+1) else
if e('влево') then ss('влево',dx,-1) else
if e('вправо') then ss('вправо',dx,+1) else error:=true;
if not error then begin inc(x,dx*r); inc(y,dy*r) end;
end
else begin
//Вот сюда добавлять новое
if e('<круг>') then wo:='o' else
if e('<квадрат>') then wo:='k' else
if e('<текстовое поле>') then wo:='t' else
if e('<удалить>') then est:=false else
if e('<создать>') then est:=true else
if e('<скрыть>') then hide:=true else
if e('<показать>')then hide:=false else
if e('<изменить радиус>')then r:=pNA else
if e('<изменить ширину>')then r:=pNA else
if e('<изменить текст>') then txt:=trim(copy(s,pos(' на ',s)+4,255))else
if e('стой')or e('пошла вон')or e('стой сволочь')then stop:=true else error:=true;
ssp;
end;
if error and (trim(s)<>'') then ce.textOut(0,0,'Неверная команда '+s+' ')
else begin
if est and not hide then
case wo of
//сюда добавлять что делать
'k': ce.rectangle(x-r,y-r,x+r,y+r);
'o': ce.RoundRect(x-r, y-r, x+r, y+r, r, r);//не нашел я круга
't': ce.textOut(x,y,txt);
end;
z:=GetTickCount+2000; while GetTickCount<z do application.processmessages;
end;
end;
closeFile(t);
ce.Draw(0,0,b);
end.
GanibalLector (2004-10-13 02:32:00) [26]2 Юрий Зотов ©
Спасибо за разьяснения.И еще,не подскажите где бы найти примеры самых форм БНФ???
Ну,т.е. то,что в [13] и [48].Может подкините еще парочку,но посложней(и желательно с циклами или с условиями).
Юрий Зотов (2004-10-12 22:04:00) [27]> ЮрийК
Конечно, это не совсем БНФ. Использована сокращенная форма - квадратные скобки означают необязательную конструкцию и т.д.
Юрий Зотов (2004-10-12 22:00:00) [28]> programania © (11.10.04 01:38) [32]
> Сожалею что ничего не знаю о вашей программе
Немудрено - мало кто из частных лиц использует ERP-системы. А кому надо - те знают. Во всяком случае, в различные обзоры ERP-рынка мы попадали не раз, включая и буржуйские.
> наверно 1с ее совсем задавила.
Читайте внимательнее, плз. Я писал об этом.
> Кстати я наверно состряпал что-то похожее:
> programania.com/enlis.htm 800kb
Ну что тут сказать? Раве что смайлик поставить? Особенно, учитывая постинги Defunct'а, скачавшего и опробовавшего Вашу программу.
> Интересно на вашу программу взглянуть, но судя по всему
> она не для модема.
Дистрибутив - около 70 Мб. Скриншот могу прислать. Думаю, даже по нему Вы уже довольно многое поймете.
>> И этот кусок поддержки практически не требует
> Как оказалось требует и поддерживается
Снова - читайте внимательнее, плз. Практически не требует. Это означает, что поддержка данного куска занимает мизерный труд и мизерное время - как раз потому, что он изначально под поддержку и проектировался. Я об этом уже писал.
>> Можете назвать количество Ваших юзеров?
> Не могу, многие работают без поддержки, но я никому не
> отказываю и без договора.
Ну так назовите тех, кого поддерживаете. Сколько их? Если честно?
>> Похоже, Вы не видите разницы между отладкой программы и
>> отладкой ее алгоритма.
> Эт точно: в таких словесных дебрях я не силен
> Вот программы это другое дело
Вы уверены? По Вашему коду (см. [18]) этого не скажешь.
>> А что, уже писали, раз так заявляете?
> Написал: ...
Извините речь шла об интерпретаторе Паскаля . Вы сказали, что это почти механическая работа (см. [18]). Теперь выясняется, что его Вы все же не писали. Откуда же тогда такие утверждения? Даже с использованием теории это не такая уж и механическая работа, а уж без нее - так просто полный простор для творчества. Бесконечного.
> А вот что касается естественных языков теорию вы будете
> писать всю жизнь и все равно будут исключения поэтому по
> СТРОГИМ правилам русского языка я и пытаться не буду...
> И не надейтесь сделать интерпретатор естественного языка,
> который будет всегда правильно работать
Благодарю за разъяснения. :о)
Тем не менее, написать программу, которая правильно переносила бы порядка 80-90% слов по строгим правилам русского языка и при этом не использовало бы никаких словарей все-таки возможно. Помимо моей, знаю еще одну подобную. Так что в рамках тех самых 80-90% задача все же решаемая. Почему бы и Вам не попробовать, раз эта тема Вам интересна?
> А ведь не пишут как писали гады: только придумали правила
> и сразу уже готовый компилятор. Может стыдно писать потому что
> и правда "на коленке".
Ну снова - что тут сказать? Разве что еще один смайлик поставить? :о)
> почитайте что людям надо: решение конкретных проблем с
> программой.
ОК, читаю: "надо сделать интерпритатор". Конкретной проблемы не обозначено.
> никто о теориях и не упоминает.
ОК, читаю дальше: "подскажите с какой стороны подступиться к решению". Кто сказал, что подступаться со стороны БНФ - это неверно? Это как раз самый верный путь и есть.
> если SON1K будет изучать БНФ и пр. точно ничего не сделает
Очень многие делали. А выше - так вообще готовый пример. Почему же SON1K не сможет?
> А поковыряв мою программу есть шанс.
Есть. Есть шанс, что человек поймет, как НЕнадо делать. И как НЕнадо писать код. Потому что называть интерпретатором ту игрушку, что Вы написали - это просто смешно. А смотреть на Ваш стиль кодирования - просто грустно.
> Калькулятор я написал еще в DOS
> и даже несколько раз переделал.
При Вашем подходе - немудрено. Как раз об этом я и твержу.
> Возможно не все замысловатые выражения
> он вычисляет...
Вот именно. А самое печальное то, что, задавая ему какое-либо выражение, никогда нельзя быть уверенным в том, что вот именно его он вычислит правильно. То есть - пользоваться такой программой реально нельзя (разве что для подсчета куличиков в песочнице, но только не для ответственных вещей).
ЮрийК (2004-10-12 18:32:00) [29]Сравните приведённые выше записи с этими, какие из них соответствуют правилам записи БНФ?
"Unit =
"UNIT"
( Ident
| BadNames )
[ Directive ]
";"
InterfaceSection
ImplementationSection
.
InterfaceSection =
"INTERFACE"
[ UsesClause ]
{ InterfaceDecl }
"
ЮрийК (2004-10-12 18:28:00) [30]"А реальный пример есть в справке Delphi в раздел Object Pascal Grammar (вкладка Contents, а там открываем Delphi Language Guide - Object Pascal Grammar - Formal Grammar)."
Там вроде бы не совсем БНФ. Или несколько видоизменённый БНФ, либо аналог БНФ.
"From the Delphi 6.02 Help File
Goal -> (Program | Package | Library | Unit)
Program -> [PROGRAM Ident ['(' IdentList ')'] ';']
ProgramBlock '.'
Unit -> UNIT Ident ';'
InterfaceSection
ImplementationSection
InitSection '.'
Package -> PACKAGE Ident ';'
[RequiresClause]
[ContainsClause]
END '.'
Library -> LIBRARY Ident ';'
ProgramBlock '.'
ProgramBlock -> [UsesClause]
Block
"
Какая же прога будет генерить код по такому виду записей грамматики?
П7 (2004-10-12 17:12:00) [31]Ап
С удовольствием наблюдаю за этой веткой. Хотелось бы продолжения. Продолжнения кода, а не бесплодных попыток Юрия Зотова образумить бедного студента, который видно давно уже пожалел, что начал спор, но отступиться уже не может. Это видно по его постам, т.к. ни один человек не может быть таким твердолобым, отметая даже то, что знают все, если это выразил опонент. (:
Лучше кода побольше!!! (: А Кенов всегда и везде хватает... (:
Спасибо.
Romkin (2004-10-12 14:04:00) [32]А может, попроще? :))
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnanchor/html/scriptinga.asp
Юрий Зотов (2004-10-12 12:50:00) [33]> programania © (10.10.04 03:40) [18]
Ну вот мы и добрались до Вашей программы.
> Вот за 50 минут можете не верить
Почему не верю? Верю. Ваш код меня в этом вполне убеждает. 50 минут на ТАКУЮпрограмму - это даже слишком много.
> Сделаете быстрее, тогда критикуйте
Знаете, я изо всех сил стараюсь относиться к Вашим постингам серьезно (хотя это нелегко, поверьте). Поэтому сделал, как Вы и хотели - написал свою программу, чтобы иметь полное право критиковать. Делает она то же самое, что и Ваша (за исключением того, что не путает "право" и "лево", как Ваша). Вот эта детская игрушка (назвать ее иначе просто нельзя), набросанная где-то минут за 15-20:
unit MyUnit1;
interface
uses
Windows, SysUtils, Classes, Controls, Forms, ExtCtrls;
type
TForm1 = class(TForm)
Panel1: TPanel;
procedure FormDblClick(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormDblClick(Sender: TObject);
const
Cmds: array[0..3] of string = ('ВВЕРХ', 'ВНИЗ', 'ВЛЕВО', 'ВПРАВО');
Dirs: array[0..3] of TPoint = ((X: 0; Y: -1), (X: 0; Y: 1), (X: -1; Y: 0), (X: 1; Y: 0));
Err = 'Неверная команда "%s" в строке %d';
var
S: string;
i, j, P: integer;
R: TRect;
T: DWORD absolute P;
begin
with TStringList.Create do
try
LoadFromFile('MyTest.txt');
R := Panel1.BoundsRect;
for i := 0 to Count - 1 do
begin
Caption := Strings[i];
S := AnsiUpperCase(Caption);
j := 0;
while j <= 3 do
begin
P := AnsiPos(Cmds[j], S);
if P > 0 then
begin
System.Delete(S, P, Length(Cmds[j]));
if not TryStrToInt(Trim(S), P) then
raise Exception.CreateFmt(Err, [Caption, i + 1]);
OffsetRect(R, P * Dirs[j].X, P * Dirs[j].Y);
Panel1.BoundsRect := R;
T := GetTickCount + 3000;
while GetTickCount < T do
Application.ProcessMessages;
Break
end;
Inc(j)
end;
if j > 3 then
raise Exception.CreateFmt(Err, [Caption, i + 1])
end
finally
Free
end;
Caption := 'Выполнено'
end;
end.
А вот образец входного файла MyTest.txt к этой программе (слова "объект перемещение на" абсолютно ни на что не влияют и поэтому исключены, как ненужный мусор):
20 вверх
40 влево
20 вниз
40 вправо
Так что - вот теперь и рассмотрим Ваше произведение.
> но скажите какую программу проще расширить или переделать
> эту в 35 строк или вашу в 500
Переделать проще Вашу. Потому что моя переделок не потребует. А расширить проще мою. Потому что моя как раз под расширения и заточена, а вот расширить Вашу - это целая проблема. Она заточена как раз под переделку, а не под расширение.
Поясняю. Расширение - это добавление нового класса объекта или новой команды. Для этого я в заранее предусмотреннных местах просто добавлю очень небольшое количество нового кода, нисколько не меняя старый код. Реально - новый класс нужно только внести в 2 таблицы классов, а новую команды нужно внести в тип TToken и в таблицу команд, добавить обрабатывающую ее процедуру и дописать немного кода в процедуре NextToken.
И это все. Не меняется ни алгоритм, ни старый код. В Вашем же варианте добавление нового объекта или новой команды приведет к полной переделке всего алгоритма и, соответсвенно, всей программы.
Поэтому переделать проще Вашу, а расширить - мою. Несмотря на количество строк. Кстати, насчет 35 строк - это Вы погорячились. Программу на Паскале можно написать и в одну строку, но если отформатировать Ваш код так, как это принято делать в приличном обществе, то он занимает 72 строки (мой аналог - 67, так что даже и в этом Вы, извините, не преуспели).
Если хотите убедиться, чью программу легче расширять, давайте сделаем так, как сказал Defunct в [34] - дополним каждый свою программу так, чтобы она включала предложенный им набор объектов и команд:
объекты - <круг> <квадрат> <текстовое поле>
команды - <создать> <переместить> <скрыть> <показать> <удалить> <изменить радиус> <изменить ширину> <изменить текст>
Потом каждый опубликует здесь же свой новый код и все присутствующие будут иметь возможность сравнить его со старым кодом. И тогда не только мы с Вами, а вообще все смогут наглядно убедиться, чью программу проще расширять , а чью - переделывать (а если говорить прямо - то попросту заново переписывать).
А заодно все присутствующие убедятся и в том, кто же из нас имеет опыт разработки сложных программ с заранее предусмотренной поддержкой, а кто такого опыта все же не имеет. Хотя почему-то о нем говорит.
Извините, скажу прямо - люди, действительно имеющие опыт разработки, отладки и поддержки действительно сложных программ в Вашем стиле (cм. [18]) не пишут. Они пишут совсем по-другому. А в Вашем стиле пишут, образно говоря, детишки из школьного кружка программирования. И эти мои слова Вам с чистой совестью подтвердят все, кто имеет хотя бы понятие о том, что такое разработка и сопровождение действительно сложных проектов. Так что - еще раз извините, но рано Вам спорить и, тем более, насчет сложных проектов пальцы гнуть.
> Кстати я так и не понял откуда ваш интерпретатор
> берет команды
Файл DFM я привел? Привел. Что мы в нем видим? Форму, Edit и кнопку. Вы можете ввести текст в форму? Видимо, нет. А в кнопку? Видимо, тоже нет. Значит, остается только Edit. Поэтому, если Вы так и не поняли, куда вводятся команды, то это проблемы уж точно не мои.
P.S.
Вот что я имею сообщить по поводу Вашего кода. Ну как - принимаете предложение расширить программу до предложенного в [34] набора объектов и команд?
P.P.S.
На [32] отвечу позже.
Юрий Зотов (2004-10-11 20:58:00) [34]> GanibalLector © (11.10.04 19:25) [48]
> Существуют ли какие-нибудь программые(да хоть какие-нибудь)
> средства для создания(ну или для проверки) формул???
Для проверки БНФ - не знаю. Обычно для этого строится таблица начальных символов и проверка делается по ней, но есть ли программные средства, выполняющие такую работу - не знаю.
А для генерации компилятора по готовому набору БНФ средства есть - например, ищите Lex и Yacc. В Интернете ссылок на них полно.
> хотелось бы посмотреть на реальные примеры. Интересно знать на > скольких они страницах будут(т.е.большие ли они). Кстати,в
> том,что я нашел имеется операторы ветвления,цикла и т.д. Вот
> бы на них посмотреть!!!
Большие или небольшие - это, естественно, зависит от сложности самого входного языка. А реальный пример есть в справке Delphi в раздел Object Pascal Grammar (вкладка Contents, а там открываем Delphi Language Guide - Object Pascal Grammar - Formal Grammar).
> есть какие книги по данной тематике???
Конечно, и немало. Например, знаменитая "книга дракона" (авторы - - Ахо, Сети, Ульман). В интернете найдете наверняка.
> И еще,а если предположим,после интерпритации и выполнения
> существует некий результат.И в зависимости от значения этого
> результата необходимо опять сформировать новое "предложение"
> для дальнейшей интерпритации.Как в этом случае быть???
То есть, самомодифицирующийся язык? Видимо, нужно хранить набор БНФ где-то в TStringList (в файле и т.п.) и обрабатывать его "на лету" - тогда перед обработкой можно менять его как угодно. Примерно это и делают Lex & Yacc.
Defunct (2004-10-11 20:13:00) [35]> programania
> С ним размер моих программ будет вдвое больше
Зато сервис выше, программу можно будет хоть нормально анинсталлить. Тем более никто вас не заставляет добавлять в инсталляшку MSI engine, делайте без него.
> Применение RAR вместо обычного ZIP вызвано большим числом файлов.
Это называется на простом народном языке - "галимая отмазка", Rar есть у всех а вот sfx никому не нужен.
> Rar их сжимает в непрерывный архив
> 840kb а ZIP в 1370kb
Если программа заслуживает внимания, тогда пользователям не важно сколько занимает инсталляшка 800kb или 10Mb.
> Кстати, зря вы его ругаете:
> выглядит он как настоящий инсталятор и в нем можно
> еще сделать ярлык, показать лицензию и многое др.
Выглядит все это как обычный sfx, причем MS-Guard мне сразу напомнил об опасности троянов и прочей трояноваятельной продукции.
>> Опишите хотя бы чего ждать от программы?
> Появления Kadr.jpg
Знаете, такую картинку я бы мог посмотреть в ACDC или IE, зачем для этого писать какую-то еще дополнительную программу?
>> допускаете ошибки на сайте поддержки,
> Пожалуста укажите ошибки на сайте: я исправлю
Кое-что я уже привел в [35], но если вы считаете, что там все гладко тогда это ваше авторское право.
>> случайно нажал кнопку '=' меню съехало куда-то на бок
> '=' на самом деле означает '+' и вызывает увеличение
> шрифта текста меню, а '-' уменьшение
> однако я про них уже забыли они работали неправильно
> спасибо что напомнили теперь работают.
Подозреваю, таких "уже забыл" в программе гораздо больше.
> Как вы запускаете ENLIS.EXE?
Двойным кликом в проводнике.
>> Интерфейс крайне непонятен
> Напишите что может быть непонятно в 2 пунктах меню.
> Кстати, может лучше на mail@programania.com
Именно эти 2 пункта.
Понимаете, я не понимаю как работать с программным продуктом, у которого присутствует только 2 доступных действия "Помощь F1" и "Выход". С первого взгляда, и с последующий тоже, такое впечатление, что ваша программа - розыгрышь.
> Спасибо за замечания:
> вроде мелочи и исправляются быстро,
> но я бы сам об этом не узнал,
На здоровье. Право же не стоит благодарностей, я только взглянул на вашу программу (только запустил и вышел), в деталях ничего не смотрел поскольку так и не понял назначения вашей программы.
> Если у вас есть программа, могу тоже покритиковать.
Критикуйте [44]. Буду премного благодарен, хотя наврятли найду время им заниматься.
OSokin (2004-10-11 20:09:00) [36]Блин, такой легкий вопрос обсуждается на самом серьезном уровне!
Я такое на турбо паскале делал. Работало.
GanibalLector (2004-10-11 19:25:00) [37]2 Юрий Зотов
>> ЮрийК © (10.10.04 17:32) [22]
>В данном случае - с помощью головы. Задача слишком простая.
А если она сложна???Что тогда???Существуют ли какие-нибудь программые(да хоть какие-нибудь) средства для создания(ну или для проверки) формул???
Дальше больше...Я тоже нарыл в Инете материал про БНФ,однако примеров,подобных вашему нет.Интересует в часности это:
{**************************************************************}
{ }
{ <statement> ::= <command> <target> <param_list> }
{ }
{ <command> ::= <identifier> }
{ <target> ::= <class_name> | <object_name> }
{ <param_list> ::= <parameter> | <parameter> <param_list> }
{ }
{ <identifier> ::= <letter> | <letter> <identifier> }
{ <class_name> ::= <identifier> }
{ <object_name> ::= <class_name> <unsigned> }
{ <parameter> := <empty> | <sign> <unsigned> }
{ }
{ <letter> ::= A...y }
{ <unsigned> := <digit> | <digit> <unsigned> }
{ <empty> ::= }
{ <sign> ::= <empty> | + | - }
{ }
{ <digit> ::= 0...9 }
{ }
{**************************************************************}
{ }
{ 1. <object_name> проверяется по таблице объектов ObjectTable }
{ 2. <class_name> проверяется по таблице классов ClassTable }
{ 3. <command> проверяется по таблице команд CommandTable }
{ 4. Алфавит нечувствителен к регистру }
{ }
{**************************************************************}
Мне тут все ясно,но хотелось бы посмотреть на реальные примеры.Интересно знать на скольких они страницах будут(т.е.большие ли они).Кстати,в том,что я нашел имеется операторы ветвления,цикла и т.д.Вот бы на них посмотреть!!!
З.Ы. И последнее,скажите,может есть какие книги по данной тематике???
З.З.Ы. И еще,а если предположим,после интерпритации и выполнения существует некий результат.И в зависимости от значения этого результата необходимо опять сформировать новое "предложение" для дальнейшей интерпритации.Как в этом случае быть???
programania (2004-10-11 17:52:00) [38]>Defunct © (11.10.04 04:15) [43]
>(в комплект поставки Delphi входит Install Shield Express)
С ним размер моих программ будет вдвое больше
а установка сложнее, лучше я сам напишу как в ENJOL.ZIP
Применение RAR вместо обычного ZIP вызвано
большим числом файлов. Rar их сжимает в непрерывный архив
840kb а ZIP в 1370kb, а так как Rar меньше распространен то сделан Self архив.
Кстати, зря вы его ругаете:
выглядит он как настоящий инсталятор и в нем можно
еще сделать ярлык, показать лицензию и многое др.
>Опишите хотя бы чего ждать от программы?
Появления Kadr.jpg
>допускаете ошибки на сайте поддержки,
Пожалуста укажите ошибки на сайте: я исправлю
>случайно нажал кнопку '=' меню съехало куда-то на бок
'=' на самом деле означает '+' и вызывает увеличение
шрифта текста меню, а '-' уменьшение
однако я про них уже забыл и они работали неправильно
спасибо что напомнили теперь работают.
Как вы запускаете ENLIS.EXE? если ярлыком то нужно
указать "Рабочая папка" как у EXE, но проще из Commandera
Сейчас это исправлено и все равно как
>Интерфейс крайне непонятен
Напишите что может быть непонятно в 2 пунктах меню.
Кстати, может лучше на mail@programania.com
Спасибо за замечания:
вроде мелочи и исправляются быстро но я бы сам об этом не узнал,
так как использовал по другому
Если у вас есть программа, могу тоже покритиковать.
Defunct (2004-10-11 17:05:00) [39]> Новая версия Avtoshem'ы?
Очень похоже, в исходниках, возможно, они вообще как две капли воды, жаль на сайте не нашел исходников.
VMcL (2004-10-11 07:32:00) [40]Новая версия Avtoshem'ы?