Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.06.09;
Скачать: CL | DM;

Вниз

Читать с 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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.023 c
6-26638
Andre_
2003-04-08 12:46
2003.06.09
Проблема с сокетами


6-26632
denisWW
2003-04-07 22:26
2003.06.09
ну кто посоветует?TNMFTP вызывает NMFTP1PacketSent только кратно


14-26757
VitGun
2003-05-22 21:07
2003.06.09
DBGrid + Tree


14-26788
Might
2003-05-23 22:02
2003.06.09
Запуск чужих программ


7-26805
alfim
2003-03-05 21:52
2003.06.09
GINA. Блокирование ctrl+alt+del в WinXP, Win2k