Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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;



Страницы: 1 вся ветка

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

Наверх





Память: 0.45 MB
Время: 0.009 c
7-70043
dim2001
2002-01-26 16:20
2002.04.22
Переключиться Eng - Rus


14-70028
Новичок007
2002-03-18 17:18
2002.04.22
Помагите пож. очень важно...


14-70008
Феликс
2002-03-16 20:43
2002.04.22
Компоненты?


3-69663
Kostia
2002-04-01 17:33
2002.04.22
Народ, подскажите, какая БД


7-70035
ATLANTIDO
2002-01-25 20:26
2002.04.22
F8 - DISABLE





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский