Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 15.04.2015
Сообщений: 59
1

Не могу найти ошибку в коде

06.05.2015, 21:03. Показов 2141. Ответов 43
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть текст обычный. Провели его через морфологический анализатор русского языка. Теперь 2 файла: первый оригинал текста, второй размеченный.
слева обычный
справа размеченный
Есть БД (со столбцами: объект1, объект 2, экземпляр, тип отношения). Загружаем Текст первый в RichEdit. а второй в RichEdit2.
из БД берутся слова(они хранятся в массиве). И эти слова нужно сначала найти в тексте слева. То есть. Если наше слова из БД находится между { и = то, слово стоящее перед { надо закрасить, но в тексте который срава)
ПРоцесс работы программы:Загрузить тексты в ричэдиты. Извлекаем слова из БД в массив,по запросу. Затем Эти слова ищем в тексте размеченном(ричэдит1). если в указанный промежуток { и = попадает, значит это же слово закрашиваем его в тексте обычном(ричэдит2).
Видимость RichEdit1=false
он для работы только с ним
После раскраски: если в пределах одного предложения есть два закрашенных слова существительных (в размеченном тексте они =S и падеж: им, а также есть любое не закрашенное слово =V то эту тройку нужно изъять)
и выдать пользователю.
он говорит отменить или добавить в бд

Не могу найти ошибку в коде

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
function SearchForText(RichEdit: TRichEdit): Boolean;
var
StartPos, Position, Endpos: Integer;
begin
for i:=1 to count do
begin
StartPos := 0;
with RichEdit do
begin
Endpos := Length(RichEdit.Text);
Lines.BeginUpdate;
while FindText(slova[i], StartPos, Endpos, [stMatchCase])<>-1 do
begin
Endpos := Length(RichEdit.Text) - startpos;
Position := FindText(slova[i]+' ', StartPos, EndPos, []); //stMatchCase
Inc(StartPos, Length(slova[i]+' '));
SetFocus;
SelStart := Position;
SelLength := Length(slova[i]);
SelAttributes.Style:=[fsBold];
SelAttributes.Color:=clYellow;
 
end;
Lines.EndUpdate;
end;
end;
end;
 
procedure TForm1.btn1Click(Sender: TObject);
begin
try
i:=1;
ADOQuery1.Active := False;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT * FROM Predikat WHERE TipOtn = "'+ DBComboBox1.Text+'"');
ADOQuery1.Active:=True;
while(ADOQuery1.Eof <> true) do
begin
slova[i]:= ADOQuery1.Fields[1].AsString;
i:=i+1;
slova[i]:= ADOQuery1.Fields[2].AsString;
i:=i+1;
slova[i]:= ADOQuery1.Fields[3].AsString;
count:=i;
i:=i+1;
ADOQuery1.Next;
end;
 
end;
end;
Пример. вот одно предложение в оригинале такое: 
1. Процессор есть центральное устройство компьютера.
в размеченном такое:
Процессор{процессор=S,муж,неод=им,ед|=S,муж,неод=вин,ед}
есть{есть=V,несов=инф,пе|есть=S,сред,неод=им,ед|=V,нп=наст,ед,изъяв,2-л,несов|=V,нп=наст,ед,изъяв,3-л,несов }
центральное{центральный=A=им,ед,полн,сред|=A=вин,ед,полн,сред}
устройство{устройство=S,сред,неод=им,ед|=S,сред,неод=вин,ед}
компьютера{компьютер=S,муж,неод=род,ед}
Пример. вот одно предложение в оригинале такое:
1. Процессор есть центральное устройство компьютера.
в размеченном такое:
Процессор{процессор=S,муж,неод=им,ед|=S,муж,неод=вин,ед}
есть{есть=V,несов=инф,пе|есть=S,сред,неод=им,ед|=V,нп=наст,ед,изъяв,2-л,несов|=V,нп=наст,ед,изъяв,3-л,несов }
центральное{центральный=A=им,ед,полн,сред|=A=вин,ед,полн,сред}
устройство{устройство=S,сред,неод=им,ед|=S,сред,неод=вин,ед}
компьютера{компьютер=S,муж,неод=род,ед}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.05.2015, 21:03
Ответы с готовыми решениями:

Не могу найти ошибку в коде
Нужно, чтобы программа показывала количество нечётных элементов массива. А у меня оно всё время...

Не могу найти ошибку в коде
Сформировать текстовый файл d из файла f, включая в него строки, которые начинаются на гласную...

Не могу найти ошибку в коде
uses SysUtils; const t=5; type t1=array of integer; var n,m,max1,max2,l:integer; mas:t1;...

Не могу найти ошибку в коде
Слова в тексте разделены пробелом. Подсчитать количество слов, длина которых не превышает 4-х букв....

43
0 / 0 / 0
Регистрация: 15.04.2015
Сообщений: 59
10.05.2015, 19:59  [ТС] 41
Author24 — интернет-сервис помощи студентам
VladWH, Но у меня почему то он не заполняет словами массив. Пошаговая проверку делал, там проверяет на
Delphi
1
for i:=0 to High(VWords) do
и затем просто перескакивает следующую строку. В чем может быть причина?
0
243 / 193 / 94
Регистрация: 01.05.2015
Сообщений: 732
10.05.2015, 23:48 42
В том что в массиве 0 элементов. Видимо ты его не создал или в размеченном тексте нет ни одного глагола
0
0 / 0 / 0
Регистрация: 15.04.2015
Сообщений: 59
11.05.2015, 01:02  [ТС] 43
VladWH, Подключение есть. У тебя выдается предложение. А вот как выдавать триплеты: слово S, слово S, слово V?
0
243 / 193 / 94
Регистрация: 01.05.2015
Сообщений: 732
11.05.2015, 10:57 44
Записывать их в переменные при анализе приложения... сейчас только кол-во считается, допиши чтобы найденное слово записывалось в переменную и все
1
11.05.2015, 10:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.05.2015, 10:57
Помогаю со студенческими работами здесь

Не могу найти ошибку в коде
В общем сидел я делал програмку и тут столкнулся с не понятной вещью. Сидел около часа, но так и не...

Не могу найти ошибку в коде
Вот такая задачка: Какое давление на дно сосуда оказывает слой керосина высотой 0,6м?...

Не могу найти ошибку в коде
Здравствуйте. Очень нужна помощь. Есть форма 1, на ней расположены компонент RadioGroup c двумя...

Не могу найти ошибку в коде Delphi
Текст Задачи: Описать класс «Обыкновенная дробь» с двумя полями: числитель и знаменатель, с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
44
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru