Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
7-26798
Vlad Oshin
2003-04-02 14:02
2003.06.09
как узнать производителя сетевой?


1-26605
Project111
2003-05-28 17:10
2003.06.09
Excel...елки палки...


1-26554
testthewest
2003-05-27 15:20
2003.06.09
как узнать размер текста в RichEdit


1-26486
bkv
2003-05-29 11:28
2003.06.09
Передача строки в cообщении WM_COPYDATA


3-26366
Apachi
2003-05-21 07:39
2003.06.09
Дерево





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский