Kezdőoldal » Számítástechnika » Programozás » FreePascal nem találja az...

FreePascal nem találja az ékezetes karaktereket, hogyan lehetne "beírni" őket?

Figyelt kérdés

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?



2013. febr. 5. 15:00
1 2
 11/19 A kérdező kommentje:

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

2013. febr. 5. 20:02
 12/19 ejbenjaro ***** válasza:
A szöveget fájlból olvasod be?
2013. febr. 5. 20:56
Hasznos számodra ez a válasz?
 13/19 ejbenjaro ***** válasza:
Amúgy itt egy példa szövegfájl ékezetmentesítésére: [link] Ha gondolod alakítsd át a saját problémádra.
2013. febr. 5. 21:06
Hasznos számodra ez a válasz?
 14/19 ejbenjaro ***** válasza:

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.

2013. febr. 5. 22:53
Hasznos számodra ez a válasz?
 15/19 A kérdező kommentje:
Igen, fileból olvasom be, ezért bizonytalan a bemenet, de ahogy nézem ez amit küldtél ez is ['á','ö' stb... ként írja le a karaktereket, de valamiért így nem találja nekem, közben próbáltam (ord(szoveg[i]) = 123) or (ord(szoveg[i]) = 124) -al, ez megtalálja őket, csak az a baj hogy megtalálja a másik karaktert is, ezért (igazábol csak az ö-t az ü-t és az ä-t és a többi kétpöttyöst kell likvidálnom meg a német ss-t amit most nem találok) lecseréli az á-t ss-re. valahogy a szöveg kódlapját kéne egységesítenem, vagy kitalálni azt betücserélgetés elött :)
2013. febr. 5. 22:54
 16/19 anonim ***** válasza:

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.)

2013. febr. 6. 09:41
Hasznos számodra ez a válasz?
 17/19 A kérdező kommentje:
Igazából valahogy úgy kéne megoldanom, hogy a program saját magától "kitalálja", hogy milyen a kódolás, vagy eleve úgy olvassam be, hogy az jó legyen nekem, mert igazábol mindegy hogy ord(123) vagy ord(124) vagy 'ö' van benne, vagy esetleg, nem tudom hogy a string-eket mindegyik külön kódolással rendelkezik, vagy azokat egységesíti előtte, mert akkor tudnék trükközni, de így sötétben tapogatózom...
2013. febr. 6. 19:41
 18/19 ejbenjaro ***** válasza:

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.

2013. febr. 8. 14:45
Hasznos számodra ez a válasz?
 19/19 ejbenjaro ***** válasza:

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]

2013. febr. 8. 15:14
Hasznos számodra ez a válasz?
1 2

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!