Помощь - Поиск - Пользователи - Календарь
Полная версия: Memo,code.foces,memo.
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Делфи
DekaR
Здравствуйте!У меня 2-а вопроса:
1)Пользователь вводит в Memo команды паскаля(If x=1 then....)Надо,чтобы прога выполнила введённый в это поле код.
2)И меется 2-а мемо.И кнопка.Нужно,чтобы при на кнопку определённый текст добавлялся только в то мемо,на котором находится фокус.А если фокус ни на одном из них-текст не добавлялся никуда.
volvo
DekaR, ты что, транслятор писАть собрался? Оставляй эту затею, это не на одну тысячу строк программы, тебе же придется делать полный синтаксический разбор введенного текста, потом еще его компилировать, выполнять, и получать результат ...

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

Насчет второй задачи - Какая у тебя кнопка? Если обычный TButton, то в момент нажатия на него фокус, увы, не будет уже ни на первом мемо, ни на втором, он будет на самой кнопке.
DekaR
Т.е. пидётся заново писать компилятор?Задача в том,что в одну программу пользователь вводит текст на дельфи,та записывает его в файл,а другая его выполняет по мере чтения из файла.

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

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

А с мемо делай так: опиши глобальную переменную, скажем, указатель на TMemo, и потом при получении фокуса мемо (событие OnEnter, или OnClick, если я не ошибаюсь) присваивай этой переменной адрес самого объекта, то есть @Self... Таким образом, у тебя в этой переменной будет всегда адрес того мемо, у которого был последний фокус... Ну, и записывать в него, соответственно...
hiv
Смотри в JEDI Visual Component Library
У них есть готовая компонента - интерпретатор Паскаля (с некоторыми оговорками). Когда-то давно пробовал - работает.
DekaR
Цитата
опиши глобальную переменную, скажем, указатель на TMemo, и потом при получении фокуса мемо (событие OnEnter, или OnClick, если я не ошибаюсь) присваивай этой переменной адрес самого объекта, то есть @Self...

Господа.Я совершенноо непонимаю переменные типа поентер(указатель)можете в доступной форме описать что это,и с чем его едят?
volvo
Так более понятно:
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
Цитата(DekaR @ 1.03.2006 17:17) *

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

Переменная, в которой содержится адрес другой переменной. Почитай про адрессацию в памяти и адресные регистры процессора.
DekaR
Да,так понятнее.Спасибо.Работает.Правда я ошибся.У меня не 2-а мемо,а 2-а рич эдита. НО!volvo по коду который ты дал, после щелчка по кнопке и добавления,фокус возвращается в самое начало текста рич эдита,а хотелось бы в самый конец(после кода,ктоторый добавился после щелчка).
volvo
DekaR, ты будешь смеяться, но у меня как раз курсор ставится туда, где ЗАКАНЧИВАЕТСЯ вставленный при щелчке текст... Хочешь, могу присоединить EXE-шник...
DekaR
Я ещё раз попробовал.И у меня по непонятным причинам тоже правильно ставиться теперь. blink.gif smile.gif
Спасибо всем участникам обсуждения данной темы. give_rose.gif Благодаря ВАМ я наконец-то понял работу с указателями! smile.gif lol.gif lol.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.