O niedoskonałości systemowego Notatnika, która ciągnie się za nim od lat

O niedoskonałości systemowego Notatnika, która ciągnie się za nim od lat

Autor: Krzysztof Kapustka

Opublikowano: 5/14/2015, 12:00 AM

Liczba odsłon: 7875

Aplikacja Notatnik, której tekstowy jeszcze pierwowzór powstał na dwa lata przed wydaniem systemu operacyjnego Windows, jest zarówno najstarszym, jak i chyba najprostszym pod względem wykonania i obsługi akcesorium tego systemu. Starsi wiekiem i stażem użytkownicy doskonale znają ten program nie tylko z systemów operacyjnych Windows NT, ale jeszcze z czasów środowisk graficznych Windows bazujących na systemie operacyjnym MS-DOS. Notatnik tradycyjnie już dołączany jest do każdego kolejnego wydania okienek i nie inaczej będzie też w przypadku nadchodzącego Windows 10. Gdybyśmy mieli porównać ze sobą dwie dość odległe od siebie wersje Notatnika, przykładowo tę z Windows 95 oraz tę z nadchodzącego Windows 10, to w zasadzie nie znaleźlibyśmy pomiędzy nimi żadnych bardziej istotnych zmian. Można by więc sądzić, że oprogramowanie to przez wszystkie te lata, nie licząc okazjonalnych wstawek, nie było w żaden sposób modyfikowane. Nic w tym dziwnego - w programowaniu od zawsze istniała reguła, że jeśli coś działa, to lepiej tego nie ruszać.


Notatnik w Windows 2000 (SP4)

Jednak Notatnik zdecydowanie nie należy do najlepszych przykładów powyższego podejścia. Jak pamiętamy, wraz z wydaniem jednej z wersji programu Microsoft zaimplementował w nim funkcję Zawijania wierszy (ang. Word Wrap). Jej zadaniem jest zawijanie tekstu w odpowiednich miejscach, by zawsze w całości pozostawał on widoczny w okienku edycyjnym programu. Funkcja ta tylko z pozoru spełnia swoje zadanie, gdyż w rzeczywistości praca z Notatnikiem przy włączonym zawijaniu tekstu może być niekiedy bardzo uciążliwa. Zwłaszcza wtedy, gdy mamy do zapisania stosunkowo długą notatkę, a wypracowaliśmy sobie nawyk częstego zapisywania danych.

Opisywany tu problem dotyczy sposobu, w jaki tekst jest w kolejnych miejscach zawijany. Przy każdym złamaniu wiersza z powodu ograniczonej przestrzeni roboczej do tekstu dołączany jest odpowiedni zestaw znaków CR CR LF, oznaczający odpowiednio: podwójny (nie wiedzieć czemu) powrót karetki na początek wiersza (ang. carriage return, CR) oraz wstawienie nowej linii (ang. line feed, LF). Znaki te stanowią przeniesioną do świata komputerów historyczną pozostałość po mechanicznych maszynach do pisania. Jako że po wprowadzeniu nowego lub wczytaniu już istniejącego tekstu jest on przechowywany w całości w pamięci, znaki te wstawiane i obecne są tylko i wyłącznie w tejże tymczasowej i ulotnej kopii danych. Na tym etapie działa to bardzo dobrze.

Poprawne działanie funkcji zawijania wierszy kończy się niestety wraz z zapisaniem tekstu do pliku. Podczas tego procesu wstawione do treści znaki specjalne są z tekstu usuwane, następnie jest on w surowej postaci zapisywany do pliku, a na koniec wspomniane znaki łamania wstawiane są z powrotem w odpowiednich miejscach w pamięci, wyznaczonych przez bieżący rozmiar okna edytora. Po zakończeniu procesu zapisywania danych, z uwagi na powtórne sztuczne wstawienie do tekstu znaków specjalnych, występuje pewna różnica pomiędzy liczbą znaków tekstu oryginalnego, a tekstu z dodanymi znakami łamania wiersza. Notatnik poprawnie wyświetla nam samą treść (z uwzględnieniem znaków zawijania), jednak po przeliczeniu faktycznie wpisanych znaków położenie kursora zmienia swoją pozycję, by odzwierciedlić rzeczywistą długość tekstu. W efekcie chcąc kontynuować redakcję zapisanych treści zaczynamy pisać w miejscu zajmowanym przez wpisane niedawno słowa. Im więcej łamanych wierszy uzyskaliśmy do tej pory, tym dalej wstecz powędruje nasz kursor po zapisaniu danych. Tym samym za każdym razem trzeba ustawiać kursor edycji na właściwym miejscu, lub co gorsza zamykać i ponownie otwierać zapisany przed chwilą plik. W obu przypadkach daje się tu niestety odczuć dość spory dyskomfort.

Choć opisany powyżej problem można by prześmiewczo wyjaśnić szeroko znaną wymówką it's not a bug, it's a feature, w sieci niedoskonałość ta częściej określana jest przez użytkowników jako denerwujący błąd niż niewielkie niedociągnięcie. Większość osób jest jednak zdecydowanie bardziej poirytowana faktem, że problem ten tkwi we wszystkich wersjach Notatnika z funkcją zawijania wierszy. Błąd ten z powodzeniem można odtworzyć w systemie Windows 8, Windows 7, Windows Vista, Windows XP, a nawet w Windows 2000. Co więcej, sprawdziliśmy również nadchodzący Windows 10 - nic nie wskazuje na to, by chociaż w tym systemie zawijanie wierszy zostało w jakiś sposób poprawione.


Notatnik w Windows 8.1

Mimo że Notatnik z technicznego punktu widzenia jest jedną z najprostszych aplikacji Windows (jego główna funkcjonalność bazuje na systemowej klasie EDIT), to możemy w nim znaleźć również inne błędy i niedociągnięcia, takie jak choćby nieprawidłowe wskazywanie bieżącej pozycji kursora na pasku statusu po zapisaniu tekstu. Jak donoszą użytkownicy, niektóre z tych błędów z powodzeniem można poprawić sobie samemu, otwierając w dowolnym edytorze szesnastkowym plik wykonywalny Notatnika i zmieniając w nim odpowiednie wartości.

Zawijanie wierszy można oczywiście w Notatniku wyłączyć, do czego dodatkowo skłania nas fakt, że zrealizowane z jego wykorzystaniem teksty nie będą się prawidłowo drukowały. Jako że czasem trudno jest jednak z tego rodzaju udogodnień zrezygnować, większość użytkowników, mimo że do szybkiego sporządzania notatek lub przeklejania tymczasowego tekstu nie potrzebuje niczego bardziej rozbudowanego, decyduje się na wymianę wadliwego akcesorium na jego sprawniej działający i lepiej wyposażony odpowiednik, chociażby edytor kodów źródłowych Notepad++.

A czy Wam powyższy błąd Notatnika dał się kiedykolwiek we znaki? A może już dawno skojarzyliście sobie pliki tekstowe z jakimś innym edytorem? Jeśli tak, to nie zapomnijcie polecić nam swojego wyboru w komentarzach.

Jak wykorzystać Copilot w codziennej pracy? Kurs w przedsprzedaży
Jak wykorzystać Copilot w codziennej pracy? Kurs w przedsprzedaży

Wydarzenia