Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Форум на вашем ... 65535
21 ошибка прогр... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Пример работы с... 65535
Содержание сайт... 65535
ТЕХНОЛОГИИ ДОСТ... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Создание отчето... 65535
Имитационное мо... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Реклама
Сейчас на сайте
Гостей: 8
На сайте нет зарегистрированных пользователей

Пользователей: 13,368
новичок: Goosprin
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

База данных - словарь терминов на Delphi + Пояснительная записка
Обучающая и тестирующая программа по здаче экзамена ПДД на Turbo Pascal ...
Моделирование процесса поступления заявок в систему, состоящую из трёх Э...

Разработать процедуру поиска по информации Memo-поля
14. Разработать процедуру поиска по информации Memo-поля
(Term1 /S term2). 2 выражения должны быть в одном предложении. Их порядок не важен.
(Term1 +S term2). 2 выражения должны быть в одном предложении. Их порядок соблюдаться..

//---------------------------------------------------------------------------

#include
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
// инициализация приложения
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
StartFind = false;// поиск не начат
}
//---------------------------------------------------------------------------

// результаты поиска
void __fastcall TForm1::RichEdit1Change(TObject *Sender)
{
// текст результата поиска
AnsiString str = "в тексте №" + IntToStr(atoi(&((TWinControl*)Sender)->Name.c_str()[8]));
// если поиск начат и результат положительный и он еще не указан, то указываем результат
if( StartFind && !StaticText1->Caption.Pos(str) ) StaticText1->Caption = StaticText1->Caption + str + "\r\n";
}
//---------------------------------------------------------------------------

// ищем выражения в предложении
void __fastcall TForm1::FindTerm(TRichEdit* re, AnsiString Term1, AnsiString Term2, int type, int start, int end)
{
int i, j, k;
if( !type )// если порядок не важен
{
// если оба выражения найдены в предложении
if( re->Text.SubString(start, end-start).Pos(Term1) && re->Text.SubString(start, end-start).Pos(Term2) )
{
i = start; // начало предложения
// сдвиг позиции курсора с учетом начала предложения
if( start > 1) j = start-1;
else j = 0;
// ищем первое выражение в предложении и подчеркиваем
while(i)
{
i = re->Text.SubString(i, end - i).Pos(Term1);
if( i ) // если найдено
{
i += j;
re->SelStart = i-1;
re->SelLength = Term1.Length();
re->SelAttributes->Style = TFontStyles() << fsUnderline;
i += Term1.Length();
j = i - 1;
}
}
i = start;
if( start > 1) j = start-1;
else j = 0;
// ищем второе выражение в предложении и подчеркиваем
while(i)
{
i = re->Text.SubString(i, end-i).Pos(Term2);
if( i )
{
i += j;
re->SelStart = i-1;
re->SelLength = Term2.Length();
re->SelAttributes->Style = TFontStyles() << fsUnderline;
i += Term2.Length();
j = i - 1;
}
}
}
}
else // если порядок важен
{
i = start;
if( start > 1) j = start-1;
else j = 0;
i = re->Text.SubString(i, end-i).Pos(Term1);
if( i ) // если первое выражение найдено
{
i += j + Term1.Length();
if( re->Text.SubString(i, end-i).Pos(Term2) ) // если вторе выражение найдено с учетом условий поиска
{
i = start;
// ищем занова выражения в нужном порядке и подчеркиваем их
while(i)
{
i = re->Text.SubString(i, end-i).Pos(Term1);
k = -1;
if( !i ) break;
if( i && re->Text.SubString(i+j+Term1.Length(), end-i-j-Term1.Length()).Pos(Term2) )
{
i += j;
re->SelStart = i-1;
re->SelLength = Term1.Length();
re->SelAttributes->Style = TFontStyles() << fsUnderline;
i += Term1.Length();
k = i-1;
i = re->Text.SubString(i, end-i).Pos(Term2);
i += k;
re->SelStart = i-1;
re->SelLength = Term2.Length();
re->SelAttributes->Style = TFontStyles() << fsUnderline;
i += Term2.Length();
j = i - 1;
}
if( k == -1 )
{
i += j + Term1.Length();
j = i - 1;
}
}
}
}
}
}
//---------------------------------------------------------------------------

// ищем конец предложения
int __fastcall TForm1::FindEnd(TRichEdit* re, int start)
{
int i, j, k, res;
i = re->Text.SubString(start, re->Text.Length()-start).Pos("."); // если найдена точка
j = re->Text.SubString(start, re->Text.Length()-start).Pos("!"); // если найден воскл. знак
k = re->Text.SubString(start, re->Text.Length()-start).Pos("?"); // если найден вопр. знак
// проверяем позиции найденых знаков и возвращаем результат с наименьшей позицией
if( i && j && k ) // если все три знака найдены
{
res = i; // точка
if( j < res ) res = j; // воскл. знак
if( k < res ) res = k; // вопр. знак
}
else
if( !i && j && k ) // если точка не найдена
{
if( j < k ) res = j; // воскл. знак
else res = k; // вопр. знак
}
else
if( !j && i && k ) // если воскл. знак не найден
{
if( i < k ) res = i; // точка
else res = k; // вопр. знак
}
else
if( !k && i && j ) // если вопр. знак не найден
{
if( j < i ) res = j; // воскл. знак
else res = i; // точка
}
else
if( i && !j && !k ) res = i; // если только точка найдена
else
if( !i && j && !k ) res = j; // если только найден воскл. знак
else
if( !i && !j && k ) res = k; // если только найден вопр. знак
else res = re->Text.Length(); // конец текста
if( res != re->Text.Length() ) res += start; // если не конец текста, то указваем конец предложение с учетом начала
return res; // возвращаем конец предложения
}
//---------------------------------------------------------------------------

// запускаем поиск выражений в предложениях во все полях с текстом, с учетом условий поиска
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
int i, start, end;
TRichEdit* re;
StaticText1->Caption = ""; // очищаем предыдущие результаты поиска
// ищем поля с текстом на форме по имени компонентов
for(i=0; i {
if( Components[i]->Name.Pos("RichEdit") ) // если найдено
{
re = (TRichEdit*)Components[i];
if( !re->Text.Length() ) continue; // если текст отсутствует ищем другое поле
// убираем предыдущие подчеркивания
re->SelectAll();
re->SelAttributes->Style = TFontStyles() >> fsUnderline;
StartFind = true; // указываем, что поиск начат
start = 1;
// ищем выражения во всех предложениях с учетом условий
while( start != re->Text.Length() + 1 )
{
end = FindEnd(re, start);
FindTerm(re, LabeledEdit1->Text, LabeledEdit2->Text, RadioGroup1->ItemIndex, start, end);
start = end + 1;
}
StartFind = false; // поиск завершен
}
}
if( StaticText1->Caption == "" ) StaticText1->Caption = "ничего не найдено"; // отрицательный результат
}
//---------------------------------------------------------------------------





//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include
#include
#include
#include
#include
#include
#include
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TGroupBox *GroupBox1;
TRichEdit *RichEdit1;
TGroupBox *GroupBox2;
TRichEdit *RichEdit2;
TGroupBox *GroupBox3;
TRichEdit *RichEdit3;
TGroupBox *GroupBox4;
TLabeledEdit *LabeledEdit1;
TLabeledEdit *LabeledEdit2;
TRadioGroup *RadioGroup1;
TBitBtn *BitBtn1;
TGroupBox *GroupBox5;
TStaticText *StaticText1;
void __fastcall RichEdit1Change(TObject *Sender);
void __fastcall BitBtn1Click(TObject *Sender);
private: // User declarations
// функция поиска выражений в предложении, re - поле с текстом, Term1 - первое выражение, Term2 - второе выражение, type - условия поиска, start - начало предложения, end - конец предложения
void __fastcall FindTerm(TRichEdit* re, AnsiString Term1, AnsiString Term2, int type, int start, int end);
// функция поиска конца предложения, re - поле с текстом, start - начало предложения
int __fastcall FindEnd(TRichEdit* re, int start);
bool StartFind; // флаг начала поиска
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif



Опубликовал Kest February 22 2014 10:34:06 · 1 Комментариев · 2593 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
Kortny667 November 09 2014 23:01:52
Здравствуйте!
Делаю курсовую по базам данных...из той же серии что и эта работа.
но делаю в Visual C# 2010.
И у меня проблема. Запрос в Visual C# для этого же варианта(14) выглядит так:
private void button1_Click(object sender, EventArgs e)
{
dataGridView1.DataSource = FillTable(String.Format("SELECT * FROM [find-info-memo] WHERE ([memo] LIKE '%{0}%'smiley", textBox1.Text));
}
private void button3_Click(object sender, EventArgs e)
{
string[] mas = textBox1.Text.Split(' 'smiley;
if (mas.Count() == 2)

dataGridView1.DataSource = FillTable(String.Format("SELECT * FROM [find-info-memo] WHERE ([memo] LIKE '%{0}%'smiley OR ([memo] LIKE '%{1}%'smiley", mas[0], mas[1]));

А мне нужно сделать поиск не по словам, а:
(#Sn). Найти записи, в которых есть слова, содержащие один символ в заданной позиции
(?Sn). Найти записи, в которых есть слова, содержащие или не содержащие один символ в заданной позиции

Не подскажите как правильно составить такой запрос в SQL?
Заранее Спасибо!)
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
Пример работы с б...
PBFoldder
DFileDeleter
Система баннеро...
Измерение тактово...
Adapter (пример D...
SynEdit
Калькулятор [Исхо...
PHP: настольная к...
Dealer
Факториал [Исходн...
Globus VCL Extent...
ICQ
Определние размер...
База игр
StartMark
RxLIB
Delphi7 Для профе...
CoolControls v3.0...
Программирование ...

Топ загрузок
Приложение Клие... 100774
Delphi 7 Enterp... 97833
Converter AMR<-... 20268
GPSS World Stud... 17014
Borland C++Buil... 14191
Borland Delphi ... 10291
Turbo Pascal fo... 7373
Калькулятор [Ис... 5984
Visual Studio 2... 5207
Microsoft SQL S... 3661
Случайные статьи
Машины VAX-11 и пр...
Туры в Уолфиш-Бей,...
Работа с Outlook к...
told
Четкое разграничен...
Поднятие тИЦ и PR
(Request Security)...
Зумирование с фото...
Microsoft Word 2007
• Решите, какой IP...
Беспроводные локал...
2.1. ЦЕЛЬ: ХРАНЕНИ...
Блок INDEX
Разработка Web-фо...
На чем завершается...
в кадре использует...
Преобразование ука...
Класс TManager
Создание структуры...
Формат NdefRecord
Разборка Mac на части
Синхронизация буфе...
Справочные списки
Альтернативные вар...
Ввод данных из окн...
Статистика



Друзья сайта
Программы, игры


Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?