Kontrolka w stylu TEdit z wyświetlaniem kodu znaków sterujących

0

Wiecie, gdzie można znaleźć kontrolkę w stylu TEdit, która pozwala wyświetlać znaki sterujące z zakresu 0..31 kodów ASCII jak robi to porównywarka plików WinMerge (lub podobnie), tzn. znak kontrolny jest wyświetlany jako dwucyfrowa liczba hex (o wartości kodu znaku) umieszczona w zaokrąglonym prostokącie? Tak to wygląda: bcbad89d7d.png.

0

Żadnej takiej nie widziałem, ale możesz sam wykonać, nadpisując kontrolkę TEdit.

0
Patryk27 napisał(a):

Żadnej takiej nie widziałem, ale możesz sam wykonać, nadpisując kontrolkę TEdit.

Masz na myśli takie rozwiązanie, w którym znak kontrolny będzie prezentowany w formacie np. [XX], czyli np. ABCD[1A]EFG, a przy edycji oczywiście traktowany jak by to był pojedynczy znak?

0

Może być i tak.
Możesz też po prostu nadpisać renderowanie kontrolki.

0

Spróbuję z własnym malowaniem (WM_PAINT), tylko trochę z tym roboty, bo skoro znak kontrolny będzie zajmował 4 znaki (chociaż może lepiej bez nawiasów kwadratowych, więc tylko 2 znaki hex w innym kolorze), to trzeba zrobić też poruszanie się po takim tekście i jego edycję. Liczyłem na gotowy komponent. ;)

0

@marogo - nie znam programu WinMerge, ale czy on przypadkiem nie używa jakiegoś własnego fonta, w którym znaki kontrolne także mają swoją postać graficzną?

W każdym razie zawsze możesz taki font przygotować, przy rozruchu aplikacji zarejestrować, a przed pokazaniem formularza (po jego utworzeniu) ustawić w komponencie jego nazwę w Edit.Font.Name; Wtedy praktycznie odpadnie pisanie kodu, ale nie wiem czy wyświetlanie kodu znaku to jedyny bajer, jaki potrzebujesz.

0

Tak wyglada winmerge podczas porównania binarnych plików
https://jamesoncode.files.wordpress.com/2010/03/binary-qlikview-winmerge.png

Ten pomysł z fontem bardzo ciekawy ! W sumie to by pewnie koledze wystarczyło tylko chyba nie ma takiej czcionki ;) Trzeba samemu zrobić

0

Z własnym fontem ciekawy pomysł. Podobnie do WinMerge ma Notepad2, z tym że znaki kontrolne są wyświetlane nie jako wartość hex, tylko jako ich skrócony opis, np. dla #7 to 'BEL', a dla #27 to 'ESC'. Tak to wygląda: 5a2d0021c5.png Jednak chwilowo zawiesiłem ten temat, bo mam ważniejsze kwestie do rozwiązania. Jak wrócę do tematu, to dam znać. Dzięki za pomysły ;)

0

WinMerge korzysta pewnie z własnego, rastrowego fonta, więc trzeba by taki zrobić samemu; Jest do tego dużo aplikacji, np. Bitmap Font Generator, więc jest w czym wybierać.

0

lepsze takie wyświetlanie niż wszystko jako kropka ., znak zapytania ? czy spacja i wszystko wygląda tak samo.
ale w czasach DOS-owych bajty o kodach mniejszych niż spacja też miały swoją reprezentację graficzną (różne buźki, serduszka itp.) i od kontekstu użycia zależało, czy będą zinterpretowane jako kody sterujące czy jako znaki do wyświetlenia.
dziwi mnie że twórcy dzisiejszych hexedytorów wymyślają dziwne sposoby na przedstawienie tych bajtów zamiast użyć fontu z tymi znaczkami.

0
Azarien napisał(a):

lepsze takie wyświetlanie niż wszystko jako kropka ., znak zapytania ? czy spacja i wszystko wygląda tak samo.
ale w czasach DOS-owych bajty o kodach mniejszych niż spacja też miały swoją reprezentację graficzną (różne buźki, serduszka itp.) i od kontekstu użycia zależało, czy będą zinterpretowane jako kody sterujące czy jako znaki do wyświetlenia.
dziwi mnie że twórcy dzisiejszych hexedytorów wymyślają dziwne sposoby na przedstawienie tych bajtów zamiast użyć fontu z tymi znaczkami.

To było trochę inaczej. W odległych, rzadko już odwiedzanych, rejonach mojej pamięci plącze się info o sześciobitowych znakach. Potem, chyba krótko, były siedmiobitowe (nazywane tablicą ASCI) no i pojawiły się ośmiobitowe (tablica ASCII). Ich reprezentacja graficzna w zasadzie zależała od producenta drukarki, która ją pokazywała (monitory to dopiero się pojawiały). I tak zasadnicza część (alfabet łaciński, cyfry i większość znaków interpunkcyjnych) w zasadzie kryła się pod tymi samymi kodami binarnymi w różnych interpretacjach. Wyglądała też bardzo podobnie. No ale już ich wygląd zależał od twórczości producentów, którzy przy konkurencji, bardzo chcieli czymś zachęcić klientów. Na świecie w miarę przyjął się wygląd tablicy ASCII zaproponowany przez firmę IBM, która jeszcze wtedy była właścicielem systemu DOS -Bill jeszcze tego od nich nie kupił. W tej tablicy nie tylko polskich znaków diaktrycznych nie było. Zdaje mi się, że nawet Francuzom i Niemcom czegoś brakowało. O chińskich, japońskich, etc. nikt jeszcze nie myślał. I dodam ciekawostkę - pierwszą firmą, która zastąpiła niektóre pozycje w tablicy ASCII IBM'a polskimi znakami diaktrycznymi była, dziś już chyba nie istniejąca, firma Star, która bardzo chciała, aby jej drukarki się u nas sprzedawały. Jak powstawały czcionki, to ich autorzy od razu nie umieścili w nich wszystkich 256 znaków tablicy ASCII. W sumie zależało to od autora czcionki co i w którym miejscu umieścił. A ja do dziś nie widzę uwzględniającej wszystko reprezentacji graficznej. A nawet nie wyobrażam sobie, jak mogła by wyglądać tablica z wszystkimi (choć tam są chyba jeszcze wolne miejsca) znakami dla wszystkich kodów Unicode. Tego to chyba nawet Chińczyk by nie spamiętał :-). Też mnie denerwują te spacje, kropki, czy prostokąty reprezentujące tak samo różne przecież znaki. Ale z drugiej strony możemy sobie powiedzieć: no tak tu jest "a", tam "Z", a tam coś mniej ważnego. To mniej ważne w slangu dawnych lat było nazywane krzakiem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1