powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Autocomplete
19 сообщений из 19, страница 1 из 1
Autocomplete
    #39993027
Janex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем.

Нужно в апликацию, в редакторе кода встроить Autocomplete.

Типо написал Begin, нажал Enter и в следуюшеи строке впыхивается End;
Или тож самое про Try...Finally..End;

Мож у кого то какои то готовыи кусок кода наидётся или ткните
от куда скопировать, мож какие то компоненты такие есть от куда код выдрать? ...

WBR
Janex
...
Рейтинг: 0 / 0
Autocomplete
    #39993066
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Janex,

А в SynEdit нет готового?
...
Рейтинг: 0 / 0
Autocomplete
    #39993068
Vizit0r
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если вопрос ТОЛЬКО в таких автодополнениях - то оно элементарно делается, OnKeyPress если Enter - то получать слово до предыдущего пробела, если подходит под шаблон - заменять его нужным блоком.

Другой вопрос, что с этого обычно все только начинается.
...
Рейтинг: 0 / 0
Autocomplete
    #39993081
Janex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vizit0r
если вопрос ТОЛЬКО в таких автодополнениях - то оно элементарно делается, OnKeyPress если Enter - то получать слово до предыдущего пробела, если подходит под шаблон - заменять его нужным блоком.

Другой вопрос, что с этого обычно все только начинается.


Да, с OnKeyPress только всё начинается :)

Написал Begin a Enter (#13) нажимаеш через 100 строчек, и по середине куча begin..end, try..finally..end, case .. end и
шас начинаем парсить - над end впыхивать там или не ...
Уже пробовал, геморои конкретныи :)
...
Рейтинг: 0 / 0
Autocomplete
    #39993085
Vizit0r
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Janex
Vizit0r
если вопрос ТОЛЬКО в таких автодополнениях - то оно элементарно делается, OnKeyPress если Enter - то получать слово до предыдущего пробела, если подходит под шаблон - заменять его нужным блоком.

Другой вопрос, что с этого обычно все только начинается.


Да, с OnKeyPress только всё начинается :)

Написал Begin a Enter (#13) нажимаеш через 100 строчек, и по середине куча begin..end, try..finally..end, case .. end и
шас начинаем парсить - над end впыхивать там или не ...
Уже пробовал, геморои конкретныи :)


autocomplete так не работает

набрал begin, нажал enter, получил

begin

end;

то же самое с try

Вот эти все "а если enter через 100500 строк, а если..." - неправильны по определению. Или сразу enter после слова, или игнор.
...
Рейтинг: 0 / 0
Autocomplete
    #39993100
Janex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vizit0r,

А в дельфе так оно работает, и очень удобно кстати ...
...
Рейтинг: 0 / 0
Autocomplete
    #39993103
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Janex,

так тебе парсер придется писать, если так сложно хочешь. Посмотри исходники Лазаруса, можно начать отсюда https://svn.freepascal.org/svn/lazarus/trunk/components/codetools/pascalparsertool.pas
...
Рейтинг: 0 / 0
Autocomplete
    #39993169
AWSVladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Janex, ты уже давно на форуме, я уже писал про быстрый ввод begin-end, ты наверно тот пост пропустил, повторяю.
Добавь в шаблоны 2 файла:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
<?xml version="1.0" encoding="utf-8" ?>
<codetemplate	xmlns="http://schemas.borland.com/Delphi/2005/codetemplates"
				version="1.0.0">
	<template name="1" invoke="manual">
		<description>

		</description>
		<author>

		</author>
		<code language="Delphi"  delimiter="|"><![CDATA[begin
|selected||*||end|
end;]]>
		</code>
	</template>
</codetemplate>



Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
<?xml version="1.0" encoding="utf-8" ?>
<codetemplate	xmlns="http://schemas.borland.com/Delphi/2005/codetemplates"
				version="1.0.0">
	<template name="2" invoke="manual">
		<description>

		</description>
		<author>

		</author>
		<code language="Delphi" context="methodbody"  delimiter="|"><![CDATA[begin
|selected||*||end|
end else begin

end;]]>
		</code>
	</template>
</codetemplate>




Сделай их первыми в списке, тогда что бы ввести begin end нужно нажать Ctrl+J, потом Enter.
Для конструкции
Код: pascal
1.
2.
3.
4.
5.
begin

end else begin

end;


нужно нажать последовательность: Ctrl+J, стрелку вниз, потом Enter
и все.
...
Рейтинг: 0 / 0
Autocomplete
    #39993221
Janex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AWSVladimir,

Спасибо, но мне ето надо встроить в свою апликацию, пользуюст там
AdvMemo от TMS Software. Подсветка им там есть, а вот етих наваротов нету :(
...
Рейтинг: 0 / 0
Autocomplete
    #39993465
AWSVladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Janex,
AdvMemo не пользовался, сорри по нему не подскажу.
Там же типа редактор со строками типа TStrings ?
Если сделать по хоткею или на KeyDown/Up:
add('begin');
add('');
add('end;');
?
...
Рейтинг: 0 / 0
Autocomplete
    #39993505
AWSVladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну не Add() конечно, но смысл то понятен.
Где курсор стоит там и вставляем наши строки.
В твоем компоненте есть же возможность использовать Find/Replace?
Ну и сделай по аналогии.
...
Рейтинг: 0 / 0
Autocomplete
    #39993744
Janex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AWSVladimir,
Да мои вопрос не по теме "как поставить картинку на кнопку" :)
add('end;') - да ето и коню ясно :)
Там нужен маленькии "искуственныи интелект" которыи анализирует код
и решает ставить тут End или нет ...
Наверно самому придётся напряч мозги и писать ето всё ...
...
Рейтинг: 0 / 0
Autocomplete
    #39993840
kapas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Janex, ну если написать ИИ-движек проще. А заглянуть в AdvMemo.pas - сложнее. Пишите ИИ. Успехов
Есть там такой классс как TAutoCompletion (стр. 940), а у TAdvMemo огромный список свойств:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
property AutoCompletion: TAutoCompletion read FAutoCompletion write FAutoCompletion;
property AutoCompletionListImages: TImageList read FAutoCompletionListImages write SetAutoCompletionListImages;
property OnStartAutoCompletion: TNotifyEvent read FOnStartAutoCompletion write FOnStartAutoCompletion;
property OnStartAutoCompletion: TNotifyEvent read FOnStartAutoCompletion write FOnStartAutoCompletion;
property OnStartAutoCompletion: TNotifyEvent read FOnStartAutoCompletion write FOnStartAutoCompletion;
property OnGetAutoCompletionList: TMemoGetCompletionListEvent read FOnGetAutoCompletionList write FOnGetAutoCompletionList;
property OnGetAutoCompletionList: TMemoGetCompletionListEvent read FOnGetAutoCompletionList write FOnGetAutoCompletionList;
property OnGetAutoCompletionList: TMemoGetCompletionListEvent read FOnGetAutoCompletionList write FOnGetAutoCompletionList;
property OnGetAutoCompletionListIndex: TMemoGetCompletionListIndexEvent read FOnGetAutoCompletionListIndex write FOnGetAutoCompletionListIndex;
property OnGetAutoCompletionListIndex: TMemoGetCompletionListIndexEvent read FOnGetAutoCompletionListIndex write FOnGetAutoCompletionListIndex;
property OnGetAutoCompletionListIndex: TMemoGetCompletionListIndexEvent read FOnGetAutoCompletionListIndex write FOnGetAutoCompletionListIndex;
property OnInsertAutoCompletionEntry: TMemoInsertCompletionEntryEvent read FOnInsertAutoCompletionEntry write FOnInsertAutoCompletionEntry;
property OnInsertAutoCompletionEntry: TMemoInsertCompletionEntryEvent read FOnInsertAutoCompletionEntry write FOnInsertAutoCompletionEntry;
property OnInsertAutoCompletionEntry: TMemoInsertCompletionEntryEvent read FOnInsertAutoCompletionEntry write FOnInsertAutoCompletionEntry;
property OnSortAutoCompletionList: TMemoSortCompletionListEvent read FOnSortAutoCompletionList write FOnSortAutoCompletionList;
property OnSortAutoCompletionList: TMemoSortCompletionListEvent read FOnSortAutoCompletionList write FOnSortAutoCompletionList;
property OnSortAutoCompletionList: TMemoSortCompletionListEvent read FOnSortAutoCompletionList write FOnSortAutoCompletionList;
property CompletionList: TAutoCompletionListBox read FlistCompletion;
property OnGetAutoCompletionList;
property OnGetAutoCompletionListIndex;
property OnStartAutoCompletion;
property OnInsertAutoCompletionEntry;
property OnSortAutoCompletionList;



А еще демо-пример: TMSAdvMemoDemo01.dpr

В качестве благодарности, приму ИИ-движек, конечно если мой совет поможет.
...
Рейтинг: 0 / 0
Autocomplete
    #39993843
Vizit0r
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kapas
Janex, ну если написать ИИ-движек проще. А заглянуть в AdvMemo.pas - сложнее. Пишите ИИ. Успехов
Есть там такой классс как TAutoCompletion (стр. 940), а у TAdvMemo огромный список свойств:
А еще демо-пример: TMSAdvMemoDemo01.dpr

В качестве благодарности, приму ИИ-движек, конечно если мой совет поможет.


ты прям с козырей зашел. Еще бы предложил мануал по AdVMemo почитать :)
...
Рейтинг: 0 / 0
Autocomplete
    #39993846
kapas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vizit0r, зачем мучить Janex?
...
Рейтинг: 0 / 0
Autocomplete
    #39993992
Janex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kapas,
AutoCompletion в AdvMemo не соовсем то о чём писал в самом конце, то есть
не то что пытаюсь дабытся.
Пишеш код - написал 10 строчек и решил их всех поместить в Try...Finally.
В делъфе - перед первои строкои написал Try, переходиш в
11 стрику и нажымаеш Enter и обана - там появляется Finally..End.
В AdvMemo такого нету :(
...
Рейтинг: 0 / 0
Autocomplete
    #39993994
Vizit0r
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Janex
В делъфе - перед первои строкои написал Try, переходиш в
11 стрику и нажымаеш Enter и обана - там появляется Finally..End.

Вот только не работает только это куда чаще, чем работает.
...
Рейтинг: 0 / 0
Autocomplete
    #39993995
Janex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vizit0r
Janex
В делъфе - перед первои строкои написал Try, переходиш в
11 стрику и нажымаеш Enter и обана - там появляется Finally..End.

Вот только не работает только это куда чаще, чем работает.

Мне значит везёт, пока такое чтоб несработало не наблюдал :)
...
Рейтинг: 0 / 0
Autocomplete
    #39994304
kapas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Janex, это только ручками, подключая при необходимости головной мозг, с использованием например AST. Но, конечно, и без AutoComplete не обойтись.

Если есть кусок выделенного текста для которого необходимо вставить "обкладки" типа скобок, комментария, блока (begin ... end; try except|finally end), то это намного проще... Что-то вроде

Код: pascal
1.
  edLog.SelText := 'try' + #13#10 + OffsetText +  edLog.SelText + #13#10 + OffsetText + 'finally' + #13#10 + OffsetText + 'end;'
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Autocomplete
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]