Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.22;
Скачать: [xml.tar.bz2];




Вниз

Помогите решить проблему 


Ross   (2002-03-29 23:02) [0]

Здравствуйте. Мне нужно решить следующую задачу:
Есть база данных Paradox: Поле А, Поле Б. На форме Memo1, Memo2.
При нажатии на кнопку нужно:
1.Курсор в начале Mемо1;
2.Программа считывает первое слово до пробела из Memo1;
3.Если такое слово найдено в базе(Поле1), то заменяет на эквивалент из Поле2 и записывает в Memo2;
4.Если слово не найдено в базе(Поле1) то в Memo2 заносит символ "?";
5.Программа "проходит" пробел и цикл 2-4 повторяется до тех пор пока не закончились слова в Memo1.

Как мне решить это(кроме пункта 1)? Может кто решал уже подобную задачу, поделитесь кодом или хотя бы направлением. Буду очень признателен.



Stialy   (2002-03-30 10:55) [1]

В чем проблема?
- выделить слово из строки, если не писать самому,
можно использовать, например, библиотеку QStrings. Если не ошибаюсь, там есть функция Q_StrTok, которая возвращает часть строки по указанынм разделителям
- Поиск? Стандартные средства поиск.



Ross   (2002-04-01 11:34) [2]

Delaju tak:

i:integer;
s:string;
...
with memo1 do
begin
for i:=1 to pos(" ", Memo1.lines.text) do
begin
s:=Copy(Text, 1, i);
Find {procedura poiska v baze...}
Showmessage(s);
Memo1.SelPos:=i-1;
end;
end;

No tak poluchaetsa naiti tolko pervoe slovo iz memo1. Pomogite pojaluista



Johnmen   (2002-04-01 11:49) [3]

Естессно, ведь это, извини, чушь...
Или напиши свои функции работы со строкой или используй уже написанные кем-то, напр.
WordCount, ExtractWord и т.д. из RxLib.



Ross   (2002-04-01 12:15) [4]

Spasibo. Soglasen... Vot kogda nujno znat PASCAl, ne tolko stavit Button na formu :)...
Esli mojno daite primer, luboy, budu ochen priznatelen. Uje slishkom dolgo bius" chtobi samomu razobratsa.
Spasibo.



Johnmen   (2002-04-01 13:43) [5]

Вот тебе пример из RxLib :

function WordCount(const S: string; const WordDelims: TCharSet): Integer;
var
SLen, I: Cardinal;
begin
Result := 0;
I := 1;
SLen := Length(S);
while I <= SLen do begin
while (I <= SLen) and (S[I] in WordDelims) do Inc(I);
if I <= SLen then Inc(Result);
while (I <= SLen) and not(S[I] in WordDelims) do Inc(I);
end;
end;


function ExtractWord(N: Integer; const S: string;
const WordDelims: TCharSet): string;
var
I: Integer;
Len: Integer;
begin
Len := 0;
I := WordPosition(N, S, WordDelims);
if I <> 0 then
{ find the end of the current word }
while (I <= Length(S)) and not(S[I] in WordDelims) do begin
{ add the I"th character to result }
Inc(Len);
SetLength(Result, Len);
Result[Len] := S[I];
Inc(I);
end;
SetLength(Result, Len);
end;




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.22;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.72 MB
Время: 0.018 c
6-69947           hair_fly              2002-02-11 12:55  2002.04.22  
Подскажите, плз, сколько портов приемлемо использовать в одной проге ?


4-70060           Velocity              2002-02-18 10:12  2002.04.22  
ListBox на WinAPI


3-69742           KAA                   2002-03-27 17:48  2002.04.22  
Шахматка 2000


6-69946           knyaz17               2002-02-11 12:33  2002.04.22  
Не работает код из этой конференции!!!


1-69930           Veselov               2002-04-08 20:10  2002.04.22  
PDF, или как получить доступ к тексту внутри него ?