You are here: PSPad forum > České diskuzní fórum > Chbné umístění kurzoru pomocí "Jdi na pozici"

Chbné umístění kurzoru pomocí "Jdi na pozici"

#1 Chbné umístění kurzoru pomocí "Jdi na pozici"

Posted by: mvancl | Date: 2015-03-31 13:38 | IP: IP Logged

Zdravím !

Občas potřebuju najít místo na určité pozici v souboru, k čemuž používám CtrlG. Bohužel někdy editor umísťuje kursor chybně. Také aktuální pozice zobrazená v dialogu (po CtrlG) někdy neodpovídá realitě.
Našel jsem pravděpodobné vysvětlení: Jedná-li se o soubor s UNIXovými konci řádků (\n), potom je kurzor umístěn o tolik znaků před správné místo, kolik onomu místu předchází konců řádků. Z toho si odvozuju, že editor asi při načtení souboru konce řádků zahazuje a pak při hledání pozice počítá za každý konec řádku 2 znaky (\r\n) navíc bez ohledu na to, jaké konce řádků byly skutečně ze souboru načteny resp. jaké jsou v editoru nastavené. V hexa editoru se (pochopitelně) pozice počítá správně, to je mi ale málo platné, protože s textem potřebuju pracovat v textovém editoru a při přechodu mezi textovým a hexa editorem se pozice kurzoru nepřenese (což je mimochodem také škoda).

Snad se s tím dá něco udělat. Jinak díky za skvělý editor !

Options: Reply | Quote | Up ^


#2 Re: Chbné umístění kurzoru pomocí "Jdi na pozici"

Posted by: pspad | Date: 2015-03-31 19:25 | IP: IP Logged

Kdyz se jakykoliv soubor nacte do pameti, tak je preveden do UTF-16 kodovani do seznamu radku. Defakto tam zadne konce radku nejsou.
Pri ulozeni se text prevede do vysledneho kodovani s nastavenymi konci radku.

Muzete mi uvest nejaky priklad se skokem na nejakou pozici?

Options: Reply | Quote | Up ^


#3 Re: Chbné umístění kurzoru pomocí "Jdi na pozici"

Posted by: mvancl | Date: 2015-04-01 08:38 | IP: IP Logged

pspad:
Kdyz se jakykoliv soubor nacte do pameti, tak je preveden do UTF-16 kodovani do seznamu radku. Defakto tam zadne konce radku nejsou.
Pri ulozeni se text prevede do vysledneho kodovani s nastavenymi konci radku.

Muzete mi uvest nejaky priklad se skokem na nejakou pozici?

V tom je právě asi ten problém: Pracuju s existujícím souborem a z nějakého důvodu potřebuju najít místo v textu na pozici X. Otevřu si ho v PSpadu, zadám CtrlG a tam kýženou pozici a kurzor se mi objeví o několik znaků vlevo od správného místa. Podle výsledků chyba vzniká tak, že se při hledání pozice připočítává k délce každého řádku (bez koncových znaků) 2 znaky bez ohledu na skutečné znaky konce řádku v souboru. Proto pozicionování souboru v DOS formátu funguje správně, v UNIX (nebo MAC) formátu nikoliv.
Při ověřování jsem narazil na další problém (je diskutabilní, jestli ho považovat za chybu) související s pozicionováním při kódování UTF8 a dalších multibajtových kódování - tady se už pracuje jen se znaky, nikoliv bajty a navíc zřejmě není započítáván BOM.
Rád bych sem přidal screenshoty, bohužel nevím jak, myslím ale, že i tak je popis jasný.

Options: Reply | Quote | Up ^


#4 Re: Chbné umístění kurzoru pomocí "Jdi na pozici"

Posted by: pspad | Date: 2015-04-01 09:49 | IP: IP Logged

Máte pravdu,. Při hledání pozice se skutečně pracuje se znaky a ne s bajty v souboru. Navíc si nedovedu představit, jak bych měl pracovat s UTF-8, které má různý počet bajtů pro znak.
Program pracuje interně v UTF-16, takže co znak to 2 bajty, ale při skoku na pozici se počítají znaky, ne bajty. Samozřejmě BOM v textovém souboru při editaci je také nesmysl.

Jediné, co bych udělat mohl je zohlednění konců řádků (jedno-bajtové pro Unix a 2-bajtové pro zbytek)

Opravdu nevím, k čemu mi je v textovém souboru skok na konkrétní bajt. Pokud potřebujete skákat na konkrétní bajt, pak je k tomu textový editor nevhodný.

Edited 1 time(s). Last edit at 2015-04-01 09:50 by pspad.

Options: Reply | Quote | Up ^


#5 Re: Chbné umístění kurzoru pomocí "Jdi na pozici"

Posted by: mvancl | Date: 2015-04-01 11:26 | IP: IP Logged

Pozice v textu teď například řeším když ladím svůj parser textu a pro rychlou orientaci při ladění si vypisuju významné pozice. Protože je v PSpadu možnost skočit na pozici, samozřejmě jsem zajásal, protože mi to ušetří použití jiného nástroje jako je hexa editor a pod. Bohužel mám text v UNIX formátu, takže pozice úplně nesedí a proto jsem se ozval.
Pokud jde práci s unicode texty, je mi jasné, že už je tato funkčnost na hraně. Samozřejmě si dokážu představit úpravu, která mi nabídne při pozicování možnost volby znak/byte, ale asi by to už bylo za hranicema funkce normálního editoru a nejspíš by něco takového potřeboval málokdo.
Možná by ale ještě stála za úvahu možnost zachování pozice kurzoru v textu při přepínání mezi textovým a hexa editorem - to by pro takové případy docela pomohlo.

Zdravím

M.Vancl

Options: Reply | Quote | Up ^






Editor PSPad - freeware editor, © 2001 - 2022 Jan Fiala, Hosted by Webhosting TOJEONO.CZ, design by WebDesign PAY & SOFT, code Petr Dvořák, Privacy policy and GDPR