Форум: "Основная";
Текущий архив: 2003.06.09;
Скачать: [xml.tar.bz2];
ВнизЧитать с MEMO Найти похожие ветки
← →
Renul (2003-05-24 19:01) [0]Текст набпрается в виде команд. Затем сохраняется. При его открытии, нужно что-бы объект на санвасе, выполнил действия.
Например: нарисовать еллипс команда( drae ellipse (100,150){координаты середины еллиса.}
Мне нужно только как ето делать, а процедура рисования еллипса есть.
← →
Renul (2003-05-24 19:04) [1]Спасибо заранее!!!:)
← →
Pat (2003-05-24 23:36) [2]В цикле memo.lines[i] и разбор строки
← →
Palladin (2003-05-25 01:14) [3]
> Мне нужно только как ето делать
в этом и заключается программирование...
или ты не программист?
← →
Renul (2003-05-25 12:32) [4]Я начинающий прграммист!!! Поэтому прошу помощи.
← →
Palladin (2003-05-25 12:59) [5]Начинающий программист учится думать, а не учится просить подумать за него других...
← →
Renul (2003-05-26 08:36) [6]Тогда, зачем нужен этот форум? И что все программисты, которые сидят на этом форуме тоже думать не умеют!!!!
← →
Palladin (2003-05-26 08:39) [7]
> Мне нужно только как ето делать
слишком общий вопрос, задай более конкретный
← →
Song (2003-05-26 08:39) [8]IF Pos("draw ellipse",S)>0 then // встретилась команда draw ellipse, нужно найти координата
IF Pos("(",S)>0 then // обнаружена открывающая скобка, значит внутри есть параметры..
И т.д.
Вот это называется парсинг.
← →
Alex44 (2003-05-26 16:12) [9]Vse-taki, parsing obychno delaetsya ne tak...
Chto-to tipa (eto ne rabotayushij code, prosto
neskol"ko primerov):
var
P: PChar;
procedure SkipTill(C: Char);
begin
while P^ = " " do Inc(P);
if P^ = C then Inc(P)
else raise Exception.Create(C + " expected");
end;
procedure GetParams(Count: Integer; out Data: array of Integer);
begin
SkipTill("(");
while Count > 0 do begin
// Get an integer here, add it to Data
Dec(Count);
if Count > 0 then SkipTill(",")
else begin
SkipTill(")");
Break;
end;
end;
end;
// This one is just an example
function GetName: string;
begin
Result := "";
while P^ in ["a".."z", "A".."Z"] do begin
Result := Result + P^;
Inc(P);
end;
end;
procedure ParseName;
var S: string;
begin
S := AnsiLowerCase(GetName);
if S = "ellips" then DoEllips else
if S = "line" then DoLine else
.....
else raise Exception.Create("Bad command");
end;
begin
repeat
case P^ of
"a".."z", "A".."Z": ParseName;
" ": Inc(P);
#0, #13, #10: Break;
until False;
end;
← →
old_monkey (2003-05-26 20:13) [10]Вообще-то сначала рисуешь блок-схему. Получится такое разлапистое дерево. А потом его тупо переводишь в код. Работа требует не столько ума, сколько аккуратности.
← →
old_monkey (2003-05-26 20:39) [11]Вообще-то сначала рисуешь блок-схему. Получится такое разлапистое дерево. А потом его тупо переводишь в код. Работа требует не столько ума, сколько аккуратности.
Когда-то я разбирал вот это:
(естественно, еще под DOS на С++, но суть от этого не изменится,
проге больше 5 лет она выдавала меню и возвращала errorcode,
ее еще юзают, хотя исходник не сохранился)
2,17 double size 20,51 clear color 15,1
3,33 text "Управление лазерным принтером"
4,18 single size 18,49
5,19 bar " 1. Загрузка русских "
,17 text " Развернуть"
bar " 2. Горизонтально "
bar " 3. Вертикально "
,17 text " Ширина символов"
bar " 4. Нормальная ( 78симв-верт,113-гориз)"
bar " 5. Сжать немножко ( 94симв-верт,136-гориз)"
bar " 6. Сжать сильно (130симв-верт,189-гориз)"
bar " 7. Сжать еще сильнее(170симв-верт,261-гориз)"
,17 text " Высота строк"
bar " 8. Нормальная ( 64строк-верт,50-гориз)"
bar " 9. Уплотненная ( 88строк-верт,66-гориз)"
21, bar " Esc - выход "
Устанавливаем флаги:
(разрешен ввод номера строки, номера колонки и команды)
Цикл:
Что у нас очередным символом?
если число, то это начало номера строки обращаемся к функции,
которая просматривает до конца и результат записывает в
соответствующую переменную, запрещаем ввод номера строки и
возвращаемся к началу;
если "," , то номер строки ++, и переходим к вводу номера
колонки
если символ, то выбираем все слово и вызываем анализ ключевых
слов
и т.д., пока не доберещься до конца строки.
Не поленись, сначала нарисуй все, а то в голове все это удержать сложно.
← →
old_monkey (2003-05-26 20:39) [12]Вообще-то сначала рисуешь блок-схему. Получится такое разлапистое дерево. А потом его тупо переводишь в код. Работа требует не столько ума, сколько аккуратности.
Когда-то я разбирал вот это:
(естественно, еще под DOS на С++, но суть от этого не изменится,
проге больше 5 лет она выдавала меню и возвращала errorcode,
ее еще юзают, хотя исходник не сохранился)
2,17 double size 20,51 clear color 15,1
3,33 text "Управление лазерным принтером"
4,18 single size 18,49
5,19 bar " 1. Загрузка русских "
,17 text " Развернуть"
bar " 2. Горизонтально "
bar " 3. Вертикально "
,17 text " Ширина символов"
bar " 4. Нормальная ( 78симв-верт,113-гориз)"
bar " 5. Сжать немножко ( 94симв-верт,136-гориз)"
bar " 6. Сжать сильно (130симв-верт,189-гориз)"
bar " 7. Сжать еще сильнее(170симв-верт,261-гориз)"
,17 text " Высота строк"
bar " 8. Нормальная ( 64строк-верт,50-гориз)"
bar " 9. Уплотненная ( 88строк-верт,66-гориз)"
21, bar " Esc - выход "
Устанавливаем флаги:
(разрешен ввод номера строки, номера колонки и команды)
Цикл:
Что у нас очередным символом?
если число, то это начало номера строки обращаемся к функции,
которая просматривает до конца и результат записывает в
соответствующую переменную, запрещаем ввод номера строки и
возвращаемся к началу;
если "," , то номер строки ++, и переходим к вводу номера
колонки
если символ, то выбираем все слово и вызываем анализ ключевых
слов
и т.д., пока не доберещься до конца строки.
Не поленись, сначала нарисуй все, а то в голове все это удержать сложно.
← →
evvcom (2003-05-26 20:43) [13]
> old_monkey (26.05.03 20:39)
У тебя чего, кнопка залипла?
← →
old_monkey (2003-05-26 20:49) [14]Не, IE свалился. А я не понял, успел он отослать или нет.
← →
Renul (2003-05-27 19:41) [15]Дорогие, уважаемые программисты, вы кажется немного вышли за грани моего вопроса. Но все равно большое спасибо. Да, и думать о том что надо сдавать через 2 дня ( курсовую), как то не получается.
← →
Palladin (2003-05-27 19:45) [16]с какой стороны они вышли? они чуть чуть только заполнили...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.06.09;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.009 c