IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

 
 Ответить  Открыть новую тему 
> Memo,code.foces,memo.
DekaR
сообщение 28.02.2006 17:00
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  0  +


Здравствуйте!У меня 2-а вопроса:
1)Пользователь вводит в Memo команды паскаля(If x=1 then....)Надо,чтобы прога выполнила введённый в это поле код.
2)И меется 2-а мемо.И кнопка.Нужно,чтобы при на кнопку определённый текст добавлялся только в то мемо,на котором находится фокус.А если фокус ни на одном из них-текст не добавлялся никуда.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 28.02.2006 22:30
Сообщение #2


Гость






DekaR, ты что, транслятор писАть собрался? Оставляй эту затею, это не на одну тысячу строк программы, тебе же придется делать полный синтаксический разбор введенного текста, потом еще его компилировать, выполнять, и получать результат ...

no1.gif Не для слабонервных, тем более, что ты не ограничил ничем входные данные, а в Паскале ой как много синтаксис позволяет...

Насчет второй задачи - Какая у тебя кнопка? Если обычный TButton, то в момент нажатия на него фокус, увы, не будет уже ни на первом мемо, ни на втором, он будет на самой кнопке.
 К началу страницы 
+ Ответить 
DekaR
сообщение 1.03.2006 13:39
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  0  +


Т.е. пидётся заново писать компилятор?Задача в том,что в одну программу пользователь вводит текст на дельфи,та записывает его в файл,а другая его выполняет по мере чтения из файла.

А с мемо мне нужен похожий результат как на форума(жмешь на смайлик,а в текстовое поле добаляется его код)Только у меня 2-а текстовых поля,и нужно добавлять в то,в которое пользователь писал до нажатия на кнопку
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 1.03.2006 14:04
Сообщение #4


Гость






DekaR, стой, стой...
Ты не путай Компилятор (это то, чем является Паскаль) и Интерпретатор (типа Бейсика, например...) Вот насколько я помню, бейсиковские программы могли выполняться
Цитата
по мере чтения из файла
, а Паскаль-программа должна читаться полностью, компилироваться, и только потом выполняться... Но программка и там и там будет немаленькая smile.gif

Нечто подобное обсуждается, кстати, здесь: Свой компилятор
Загляни туда тоже, возможно, это тебя натолкнет на что-то...

А с мемо делай так: опиши глобальную переменную, скажем, указатель на TMemo, и потом при получении фокуса мемо (событие OnEnter, или OnClick, если я не ошибаюсь) присваивай этой переменной адрес самого объекта, то есть @Self... Таким образом, у тебя в этой переменной будет всегда адрес того мемо, у которого был последний фокус... Ну, и записывать в него, соответственно...
 К началу страницы 
+ Ответить 
hiv
сообщение 1.03.2006 14:26
Сообщение #5


Профи
****

Группа: Пользователи
Сообщений: 660
Пол: Мужской
Реальное имя: Михаил

Репутация: -  11  +


Смотри в JEDI Visual Component Library
У них есть готовая компонента - интерпретатор Паскаля (с некоторыми оговорками). Когда-то давно пробовал - работает.


--------------------
Никогда не жадничай. Свои проблемы с любовью дари людям!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
DekaR
сообщение 1.03.2006 17:17
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  0  +


Цитата
опиши глобальную переменную, скажем, указатель на TMemo, и потом при получении фокуса мемо (событие OnEnter, или OnClick, если я не ошибаюсь) присваивай этой переменной адрес самого объекта, то есть @Self...

Господа.Я совершенноо непонимаю переменные типа поентер(указатель)можете в доступной форме описать что это,и с чем его едят?

Сообщение отредактировано: DekaR - 1.03.2006 17:20
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 1.03.2006 17:31
Сообщение #7


Гость






Так более понятно:
implementation

{$R *.dfm}

var
LastFocused: ^TMemo;

procedure TForm1.Memo1Click(Sender: TObject);
begin
LastFocused := @Memo1;
end;

procedure TForm1.Memo2Click(Sender: TObject);
begin
LastFocused := @Memo2;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
LastFocused^.Lines.Append(':)'); // Ну, или что там тебе надо ...
LastFocused^.SetFocus;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
LastFocused := @memo1;
end;

end.

?
 К началу страницы 
+ Ответить 
hiv
сообщение 1.03.2006 17:33
Сообщение #8


Профи
****

Группа: Пользователи
Сообщений: 660
Пол: Мужской
Реальное имя: Михаил

Репутация: -  11  +


Цитата(DekaR @ 1.03.2006 17:17) *

Господа.Я совершенноо непонимаю переменные типа поентер(указатель)можете в доступной форме описать что это,и с чем его едят?

Переменная, в которой содержится адрес другой переменной. Почитай про адрессацию в памяти и адресные регистры процессора.

Сообщение отредактировано: hiv - 1.03.2006 17:34


--------------------
Никогда не жадничай. Свои проблемы с любовью дари людям!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
DekaR
сообщение 3.03.2006 13:39
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  0  +


Да,так понятнее.Спасибо.Работает.Правда я ошибся.У меня не 2-а мемо,а 2-а рич эдита. НО!volvo по коду который ты дал, после щелчка по кнопке и добавления,фокус возвращается в самое начало текста рич эдита,а хотелось бы в самый конец(после кода,ктоторый добавился после щелчка).

Сообщение отредактировано: DekaR - 3.03.2006 15:32
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 3.03.2006 18:15
Сообщение #10


Гость






DekaR, ты будешь смеяться, но у меня как раз курсор ставится туда, где ЗАКАНЧИВАЕТСЯ вставленный при щелчке текст... Хочешь, могу присоединить EXE-шник...
 К началу страницы 
+ Ответить 
DekaR
сообщение 3.03.2006 18:47
Сообщение #11


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  0  +


Я ещё раз попробовал.И у меня по непонятным причинам тоже правильно ставиться теперь. blink.gif smile.gif
Спасибо всем участникам обсуждения данной темы. give_rose.gif Благодаря ВАМ я наконец-то понял работу с указателями! smile.gif lol.gif lol.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 24.06.2025 0:41
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"