[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Serbiangnome-lista] Rečnik
From: |
Goran Rakić |
Subject: |
[Serbiangnome-lista] Rečnik |
Date: |
Sat, 12 Apr 2003 23:59:56 +0200 |
User-agent: |
KMail/1.4.3 |
Update stanja:
Rečnik radi!
Međutim, postoje neki problemi. Prvi je da ja ne znam da modifikujem configure
ili koju već skriptu koju je napravio glade iz koje se generiše Makefile. Šta
je potrebno, potrebno je proveriti da li na sistemu postoji sqlite
biblioteka, i ukoliko postoji dodati -lsqlite u parametre linkera. Možeš li
to da odradiš?
Drugi problem je oko samog pretraživanja. Naime, ja koristim sledeći kod:
char upit[300] = "select eng,srp from recnik where eng like '%";
strcat(upit,(char *) str);
strcat(upit,"%';");
što pravi upit "select eng,srp from recnik where eng like '%Copy All%';", na
primer. To će naći "Umnoži sve" u bazi, ali će naći i "Umnoži sve unose",
"Umnoži sve liste" ili šta već u bazi ima.
Problem je, a možda i nije, što će za reč (slovo) "o" naći sve reči gde se o
pojavljuje. Dakle, hteo bih nekako da ograničim (a možda i nije neophodno) da
pretražuje isključivo celu reč, tj da za upit "o" prikaže samo fraze čija
engleska varijanta u sebi ima REČ "o", a ne slovo "o". To se možda može
izvesti iz callback funkcije sqlite upita u kojoj treba svaki unos proveriti.
// callback za sqlite...
int dodajrec_clb(void * store, int c, char **v, char **azColName) {
int i;
GtkTreeIter iter;
for(i=0; i<c; i=i+2){
if(izraz da li se trazeni pojam sadrzi u frazi kao cela rec) {
gtk_tree_store_append (store, &iter, NULL);
gtk_tree_store_set (store, &iter,
ENG, v[i],
SRP, v[i+1],
-1);
}
}
return 0;
}
ali to ne znam da uradim.
Dodao sam da kada se u listi oznaci unos da se prevedena fraza prekopira u GTK
Clipboard. (onaj it ctrl+c i ctrl+v kombinacija) Mislim da je to bolje nego
da ide u PRIMARY Clip. (onaj od X-a, na prelaz miša).
Druga stvar koja mi se nesviđa, jeste generisanje upita (gore navedeno).
Mislim da bi neko dinamicko spajanje ovih nizova bilo bolje nego ovako. Jer
ovde lako dolazi do buffer owerflow-a. To se može proveriti (da li strlen
veci od 300-fiksni deo) ali verujem da to moze bolje, kako se ne bi
rezervisalo uvek 300*sizeof(char) memorije. (gde je voljeni std::vector u
C-u? ;) ).
Sam GUI mislim da zadovoljava, kako se prvi put srecem sa pakovanjem kontrola
(radio sam u fltk-u, koji to sve nema, tj ima ali se ne koristi ;) ). Ostalo
je jos azuriranje baze, ali to prvo moram da nadjem na koji nacin uopste
zamisliti. (koliko mislis da baza moze da bude velika?, da li se moze
kompresovana povuci cela? )
Pogledaj source na devbase.net/recnik/recnik.tar.gz
Pozdrav,
Goran