Hyppää sisältöön, linkkilistaan.

Arkisto Huhtikuu 2004 3. päivä

Rivinvaihto-ongelmat

Tietotekniikka, lauantaina 3.4.2004,

Alex Moskalyukin blogin kautta löytyi linkki mielenkiintoiseen ja lyhyeen Raymond Chenin kirjoittamaan artikkeliin, jossa pohdittiin sitä miksi Windows-käyttöjärjestelmä käyttää rivinvaihdon yhteydessä sekä cr- että lf-koodeja.

Windowshan on ominut tavan MS-DOS:sta ja MS-DOS CP/M:stä, joka lienee ottanut mallinsa jostain alkuaikojen suurkonejärjestelmistä. Kirjoitelman mukaan Windowsin käyttämä cr+lf-yhdistelmä pitäisi nähdä normaalina ja Unixien käyttämä pelkkä lf anomaalina, poikkeavaisuutena.

Itse muistan yhdessä ohjelmassani eteen tulleen ongelman. Tarkoitus oli tulostaa tekstiä Edit-laatikkoon, mutta rivinvaihtojen kohdalla laatikkoon tulostuikin vain mustia suorakulmioita, jotka perinteisesti ovat merkinneet käytetyn merkistön ulkopuolella olevia merkkejä. Ounastelin jo tuossa vaiheessa syypääksi tätä kaksoisrivinvaihtoa, mutta vasta tarkasteltuani ohjelman tuottamaa tekstiä heksaeditorissa se varmistui. Kun en muuta keksinyt, niin laitoin ohjelman alkuun makron, joka laventaa aina sitä käytettäessä molemmat rivinvaihdon merkit — '\r' ja '\n' — ja nimenomaan tässä järjestyksessä. Ei ehkä elegantein ratkaisu, mutta tärkeintähän on sen toimivuus.

Toinen rivinvaihtoihin liittyvä ongelma tulee mieleen 1990-luvun alkuvuosilta, jolloin käytin AmigaOS:ia. Siinä MS-DOS:lla tehtyihin teksteihin tuli kaksoisrivinvaihdot ja lisäksi vielä käänteinen m-kirjain joka rivin loppuun. Sellaista saa, kun elää valtavirran ulkopuolella.

Mutta miksi Windows ja sen esi-isät käyttävät kenoviivaa hakemistopoluissa Unixien käyttäessä internetin tavoin vinoviivaa? Vastausehdotus eräällä CP/M:ää käsittelevällä sivulla (viimeinen kappale).

Lopuksi Raymond Chenin artikkelin kommenteista napattu nörttivitsi: Notepad is just a glorified instance of CreateWindow(). Hauskaa jo käynnissä olevaa viikonloppua.

Arkisto

Copyright © 2004–2005 Lauri Seppänen. Kommentointi HaloScan.