Главная страница
    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.022 c
3-69724
Roman_Tutov@mail.ru
2002-03-28 17:04
2002.04.22
Ликбез


14-70027
lipskiy
2002-03-18 17:04
2002.04.22
Маленький вопросик про Outlook Express


1-69796
[MC]NuClon
2002-04-08 21:36
2002.04.22
Злостное программерство под API


1-69826
DeMoN-777
2002-04-09 19:04
2002.04.22
Поиск в ListBox


3-69676
vopros
2002-03-29 15:34
2002.04.22
Почему русскую букву н не воспринимает Locate?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский