Lazarus 3.0 (2023.12.21.)
Letöltés

  • Oldal:
  • 1

TÉMA:

Válasz:TDBF ékezetes keresés, szürés 2010 máj. 08 17:45 #507

  • zoli19
  • zoli19 profilkép Témaindító
  • Új tag
  • Új tag
  • Hozzászólások: 10
  • Köszönetek: 0
Köszönöm a segítséget.
Sajnos én is sejtettem, hogyha tökéletesen megakarom oldani az ékezetes betük kezelését, akkor sok dolgot nekem kell leprogramozni. :S

- Most ott tartok, hogy létrehoztam egy új kódlapot 128 alatti kódokkal 437-es kódkészlet alatt "012...9aAáAbB...". Egy hátránya, hogy a kis és nagybetük egyezöségére vonatkozó funkciókat nem lehet használni.

Válasz:TDBF ékezetes keresés, szürés 2010 máj. 06 16:27 #505

  • dfeher
  • dfeher profilkép
  • Moderátor
  • Moderátor
  • Hozzászólások: 26
  • Köszönetek: 0
- Én azt szeretném megcsinálni, hogy pl. egy indexelt állományban, ha Kiss Lászlót keresek és nem szerepel (pl. elírták), álljon rá a hozzá legközelebb elötte álló Kiss Laszlo-ra.


Ezt csak úgy tudod megcsinálni, ha írsz egy függvényt, ami minden ékezetes betűt átalakít ékezet nélkülire, és ha ékezetesen nem volt találat, akkor megnézi ékezet nélkül is.

- Sajnos a keresésre nem tudom, hogy mi alapján írjam a függvényt, itt sajnos ha 852-es kódlap alapján küldöm el neki a szöveget azt nem érti, és az eredetileg begépelt (unicode) keresökulcsot sem.


Azért, mert nem 852-es kódlapot kell használni, hanem alap ASCII-t! :)

Válasz:TDBF ékezetes keresés, szürés 2010 máj. 03 15:46 #504

  • zoli19
  • zoli19 profilkép Témaindító
  • Új tag
  • Új tag
  • Hozzászólások: 10
  • Köszönetek: 0
- Én azt szeretném megcsinálni, hogy pl. egy indexelt állományban, ha Kiss Lászlót keresek és nem szerepel (pl. elírták), álljon rá a hozzá legközelebb elötte álló Kiss Laszlo-ra.

- Sajnos a keresésre nem tudom, hogy mi alapján írjam a függvényt, itt sajnos ha 852-es kódlap alapján küldöm el neki a szöveget azt nem érti, és az eredetileg begépelt (unicode) keresökulcsot sem.

Válasz:TDBF ékezetes keresés, szürés 2010 máj. 03 15:26 #503

  • dfeher
  • dfeher profilkép
  • Moderátor
  • Moderátor
  • Hozzászólások: 26
  • Köszönetek: 0
Szia!

Ha így írom nem találja meg a keresett rekordot (kódlap átalakítás nélkül sem), ha szerepel benne akár egy ékezetes betü is. Olyan mintha egy ismeretlen karakter szerepelne az ékezetes karakterek helyén. Magában az adatbázisban DOS alatt nézve helyén vannak az ékezetek.


Ez azért van, mert a Lazarus unicode-ot, a DBF és a DOS pedig ASCII-t használ. Például az é betű ASCII kódja 130, de a 130-as unicode karakter egy vessző... Ezzel sajnos nem lehet mit kezdeni, csak annyit, hogy nem használsz ékezetes betűket, vagy megpróbálsz egy saját behelyettesítő függvényt írni, ahogy tetted is.

Egy másik gondom, hogy be lehet-e állítani, hogyha a Locate függvény nem találja meg a keresett értéket álljon rá a hozzá legközelebb álló rekordra.


Ezt hogy érted? Keressen egy hozzá hasonlót és ugorjon oda?

TDBF ékezetes keresés, szürés 2010 máj. 03 12:27 #502

  • zoli19
  • zoli19 profilkép Témaindító
  • Új tag
  • Új tag
  • Hozzászólások: 10
  • Köszönetek: 0
Sziasztok!

Nemrég kezdtem foglalkozni a Lazarusszal, elötte Clipper-ben programoztam. Sajnos most elakadtam és nem tudok továbblépni.
Az adatbázis-kezelésre a TDBF-et használom és nem boldogulok az ékezetes betükkel. Az indexelést nagy nehezen sikerült megoldanom úgy, hogy saját függvénnyel átalakítom az adatbázisba kiírandó stringet 852-es kódkészletüre (megjelenítésnél sajnos így vissza kell alakítani).

- Dbf1.InsertRecord((kod,CP_WIN_852(nev)))

A keresésre és a szürésre még nem tudtam rájönni:

- Dbf1.Locate("BNEV",CP_WIN_852(Edit5.Text),())

Ha így írom nem találja meg a keresett rekordot (kódlap átalakítás nélkül sem), ha szerepel benne akár egy ékezetes betü is. Olyan mintha egy ismeretlen karakter szerepelne az ékezetes karakterek helyén. Magában az adatbázisban DOS alatt nézve helyén vannak az ékezetek.

Egy másik gondom, hogy be lehet-e állítani, hogyha a Locate függvény nem találja meg a keresett értéket álljon rá a hozzá legközelebb álló rekordra.

(WinXP alatt a Lazarus 0.9.28.2 verziót használom.)

Köszönöm!

  • Oldal:
  • 1