FreePascal nem találja az ékezetes karaktereket, hogyan lehetne "beírni" őket?
Hello az a lényeg, hogy FreePascal ban van egy bazihoszzú szöveg, és abban vannak ö meg ü meg ä meg hasonlós speckó betűk, de ha kia akarok keresni őket, egyerüen nem ismeri fel:
For h:=1 to length(szoveg) do
Begin
if szoveg[h] = 'ö' then .....
Nem talál semmit, pedig kiírja, és ott benne vannak előtte is és utána is
probaltam chr()-el is de úgy is semmi
Valaki tudna segíteni?
Op rendszer: Microsoft Windows XP SP2
A Freepascal 2.6.0-ás IDE-jét használom (azt a kék meg sárgát)
Az alap beállításokkal, valahogy erre kellene valami megoldást találnom, akár lehet úgy is, hogy átkódolom előtte a teljes szöveget, vagy megnézem milyen kódolású, kipróbáltam a bépített cuccost, de az csak egy ből tudott hármat csinálni meg ?-et, mert nem akarok ANSItoUTF-8 meg hasonlókat használni, mert mivan ha nem ANSI a bemenet :S
Még egy verzió: [link]
A két bájton ábrázolt ékezetes karaktereket keresi meg a program.
Az előbbinél nem írtam, de akkor működik jól, ha a program forrás fájljában a keresett ékezetes karakterek ugyan abban a karakterkódolásban vannak, amiben a feldolgozandó ékezetes szöveg.
Nem tudom, van-e a gépeden Total Commander. Ha van, abban keresd meg a fájlt, nyomj egy F3-at (ez megnyitja) és utána egy 3-ast. Ez megmutatja a nyers fájlt, és látni, hogy a kérdéses karatereket hány bájton és milyen értékkel tárolja. Ebből lehet következtetni a kódolásra.
(Vigyázat, a számok ott 16-os számrendszerben értendők. Pascal pl. $A0, $FF, stb.)
Másik lehetőség, hogy ugyanott, F3 után a Lister 'beállítások' menüjében lehet játszani a kódolással, hogy melyik beállításnál mutatja helyesen a karaktereket.
Ha valami UTF, vagy más, karaktert egynél több bájton is tároló kódolás, akkor tényleg egyeztetni kell a kódolásokat, mert progiból pl. a kétbájtos karakterek bájtjait is egyenként fogja beolvasni, vagy legalábbis nem a megfelelő módon. (Ha szövegként nyitottad meg a fájlt, és nem binárisan.)
Ha Lazarust használnál használhatnád az LConvEncoding unit GuessEncoding függvényét, ami hellyel közzel megpróbálja neked kitalálni, hogy az adott String milyen karakterkódolással készült (Itt pici infó róla: [link] ).
Ha a függvény meg tudja mondani a karakterkódolást, akkor már olyanra konvertálod a szöveget, amilyenre neked szükséged van. Az LConvEncoding unit ebben is segít.
Itt egy grafikus felületű és egy parancssoros példa is Lazarussal, hogy hogyan döntheted el egy fájlról, hogy milyen karakterkódolással van elmentve.
A project1.lpi a grafikus, a pr_cmdver.lpi a parancssoros verzió. Ez utóbbi parancssorban a neve után várja a szövegfájl teljes elérési útját (pl.: pr_cmdver.exe d:\valami.txt).
A példaprogramot letöltheted innen: [link]
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!