Tekstieditorin ohjelmointi

Tarvisi jonkun esimerkkikoodin simppelistä tekstieditorista perus-basicille. Ei viitsisi alkaa keksimään pyörää uudestaan...
7257
Äänestä

Muut lukivat myös

Vastaukset 7

Vanhimmat

Lataa Microsoftin Visual Studio Express VB.NET, tee uusi windowsprojekti, siirrä textbox formille haluamaasi kokoon mutta muuta ennen koon säätämistä multiline trueksi. Siinä sulla on simppelin tekstieditorin pohja graafisella käyttöliittymällä.

Äänestä
  • Tätä teksti editoria ei tehdä PC:lle, vaan eräälle toiselle alustalle. Eli koko paska pitää tehdä alusta asti itse.

    Itse editori ei ole ongelma, mutta toiminnot "insert", "delete" ja "search" ovat. Editoitavat tiedostot ovat sen verran isoja (parhaimmillaan useita megoja, eikä alustassa riitä paukku sellaisiin), ettei ole mitään järkeä ruveta shiftaamaan tavuja.

    Lueskelin netistä punamusta-puusta (red-black tree), mikä on binääripuu. Sitä kuulemma käytetään juurikin tekstinkäsittelyssä. Nuo edellämainitut ongelma katoavat

    Ei kellään sattuisi olemaan BASICille samplekoodia aiheesta?

    Äänestä

  • ............. kirjoitti:

    Tätä teksti editoria ei tehdä PC:lle, vaan eräälle toiselle alustalle. Eli koko paska pitää tehdä alusta asti itse.

    Itse editori ei ole ongelma, mutta toiminnot "insert", "delete" ja "search" ovat. Editoitavat tiedostot ovat sen verran isoja (parhaimmillaan useita megoja, eikä alustassa riitä paukku sellaisiin), ettei ole mitään järkeä ruveta shiftaamaan tavuja.

    Lueskelin netistä punamusta-puusta (red-black tree), mikä on binääripuu. Sitä kuulemma käytetään juurikin tekstinkäsittelyssä. Nuo edellämainitut ongelma katoavat

    Ei kellään sattuisi olemaan BASICille samplekoodia aiheesta?

    Jaa-a.

    Miksi haluat esimerkin basicilla jos teet toteutuksen toiselle alustalle joka on melko tehoton? Miksi ei C?

    Etit siis toisin sanoen mallia jolla hallinnoida dataa jonka muoto voi muuttua matkalla?

    M-Kar varmaan osaa neuvvoa just tässä kun kaveri on aika haka siinä miten softantekoon tutustutaan alhaalta ylös.

    Äänestä

  • Jepulis Jeep kirjoitti:

    Jaa-a.

    Miksi haluat esimerkin basicilla jos teet toteutuksen toiselle alustalle joka on melko tehoton? Miksi ei C?

    Etit siis toisin sanoen mallia jolla hallinnoida dataa jonka muoto voi muuttua matkalla?

    M-Kar varmaan osaa neuvvoa just tässä kun kaveri on aika haka siinä miten softantekoon tutustutaan alhaalta ylös.

    Tässä tapauksessa ei ole vaihtoehtoja, pakko tehdä BASICillä. Tämä aparaatti on sellainen hiukan erikoinen, osaa IP/TCP/UPD:n, hakea DHCP:tä IP:n, DNS, WLAN, toimii serverinä, HTML:ää ja BASICia voi sotkea keskenään ja muita hienoja plaah plaah -systeemejä, joita tarvin projektissa. Paukkuakin on sellainen 80Mhz. Hienous tässä toosassa helppo käytettävyys, kaikki toimii hakkaamatta päätä seinään. Kokokin on etu, pienimmät modulit noin 3mm paksuja 14mm leveitä kanttiinsa. Tuon näitä tuotteita maahan ja näistä mokkuloista on jos jonninmoista tuotetta työnalla teollisuuden tarpeisiin.

    Ainoa ohjelmointikieli on event-tyyppinen BASIC, itseasiassa siinä on oikein mukava IDE, kertoo kaiken kysymättäkin. Mutta sitten ne huonot puolet...

    Muistia ei ole käytössä muuttujille kuin joku 32kt, flashia 512kt (toimii levynä). Lisäksi tarkoitus olisi lisätä sarjadataliitännäinen USB-host (FTDI) muistitikkua varten. Datan käsittelyyn ei kovin kummoisia toimintoja ole. Merkkijonotkin on rajoitettu 254 merkkiin (yksi tavu pituudelle).

    Juu, nimenomaan tarvin jonkin helpon tavan käsitellä isoja tiedostostoja, poistaa ja lisätä merkkejä ilman että kaikkea tarvitse shiftata. Tuo redblack-tree on toistaiseksi mulle muinaishebreaa, jospa olisi helpompi tapa... Olihan C64:lläkin BASICilla kirjoitettuja tekstinkäsittelysoftia, mihin lie sitten perustunut...

    Äänestä

  • .......... kirjoitti:

    Tässä tapauksessa ei ole vaihtoehtoja, pakko tehdä BASICillä. Tämä aparaatti on sellainen hiukan erikoinen, osaa IP/TCP/UPD:n, hakea DHCP:tä IP:n, DNS, WLAN, toimii serverinä, HTML:ää ja BASICia voi sotkea keskenään ja muita hienoja plaah plaah -systeemejä, joita tarvin projektissa. Paukkuakin on sellainen 80Mhz. Hienous tässä toosassa helppo käytettävyys, kaikki toimii hakkaamatta päätä seinään. Kokokin on etu, pienimmät modulit noin 3mm paksuja 14mm leveitä kanttiinsa. Tuon näitä tuotteita maahan ja näistä mokkuloista on jos jonninmoista tuotetta työnalla teollisuuden tarpeisiin.

    Ainoa ohjelmointikieli on event-tyyppinen BASIC, itseasiassa siinä on oikein mukava IDE, kertoo kaiken kysymättäkin. Mutta sitten ne huonot puolet...

    Muistia ei ole käytössä muuttujille kuin joku 32kt, flashia 512kt (toimii levynä). Lisäksi tarkoitus olisi lisätä sarjadataliitännäinen USB-host (FTDI) muistitikkua varten. Datan käsittelyyn ei kovin kummoisia toimintoja ole. Merkkijonotkin on rajoitettu 254 merkkiin (yksi tavu pituudelle).

    Juu, nimenomaan tarvin jonkin helpon tavan käsitellä isoja tiedostostoja, poistaa ja lisätä merkkejä ilman että kaikkea tarvitse shiftata. Tuo redblack-tree on toistaiseksi mulle muinaishebreaa, jospa olisi helpompi tapa... Olihan C64:lläkin BASICilla kirjoitettuja tekstinkäsittelysoftia, mihin lie sitten perustunut...

    No C64:n basicista en muista enää niin tarkasti sitä miten siinä allokoitiin suurempia muistialueita ilman pokea ja peekkiä, mutta mutta.. Joku linkitetty lista voisi sopia tuohon tarkoitukseen. Sillä hallitset koko hoitoa aika simppelillä tekniikalla eli ei vaadi kovinkaan kummallista koodia taakse. Puurakenteillakin sen saisi hoidettua, mutta itse hoitaisin homman niin simppelillä tavalla kuin mahdollista.

    Listarakenteessa on tietty se, että kovasti kun editoit niin fragmentoinnista voi tulla ongelmaa, mutta tuskin kovin nopeasti. Toisaalta jos on mahdollisuus putsata listaa aina silloin tällöin niin toi ei olisi ongelma. Ainakin noi editit, insertit ja copyt onnistuu tolla mallilla helposti.

    32 muistia rajoittaa, mutta jos et pelkää flashin kulumista, niin lataat vaan pienen osan listoja levyltä muistiin ja editoit sieltä ja flashiin taas takaisin kun editoitava kohta vaihtuu. Ei ehkä nopein mahdollinen tapa, mutta oiskohan siedettävän nopea tollasella. Oletan meinaan, ettei 32:n mahu koko editoitava data millään.. Toisaalta et varmaan halua tehdä koko edittiä flashilta, koska se on hidasta ainakin jossain määrin. Että ainakin vähän enemmän kuin pari editoitavaa tavua pitää ladata rammiin.

    Oon joskus ton tapasille tehnytkin softaa ja pallottelu oli sillon paljon just sen kanssa paljonko pitää muistissa ja miten kirjottelee flashille. Silloin selvisi aika simppeleillä rakenteilla vaikka pitää myöntää, ettei dataa ollut editissä ihan paria megaa. Eikä noita hetrsejäkään ihan noin paljoa vaikka ei kait mennyt ihan yksnumeroisiinkaan.

    Noi on palkitsevia juttuja kun ne saa tehtyä. Mulla se on jo it-iässä muinaishistoriaa, mutta kait ne samat periaatteet ovat jossain määrin ok.

    Äänestä

  • Jepulis Jeep kirjoitti:

    No C64:n basicista en muista enää niin tarkasti sitä miten siinä allokoitiin suurempia muistialueita ilman pokea ja peekkiä, mutta mutta.. Joku linkitetty lista voisi sopia tuohon tarkoitukseen. Sillä hallitset koko hoitoa aika simppelillä tekniikalla eli ei vaadi kovinkaan kummallista koodia taakse. Puurakenteillakin sen saisi hoidettua, mutta itse hoitaisin homman niin simppelillä tavalla kuin mahdollista.

    Listarakenteessa on tietty se, että kovasti kun editoit niin fragmentoinnista voi tulla ongelmaa, mutta tuskin kovin nopeasti. Toisaalta jos on mahdollisuus putsata listaa aina silloin tällöin niin toi ei olisi ongelma. Ainakin noi editit, insertit ja copyt onnistuu tolla mallilla helposti.

    32 muistia rajoittaa, mutta jos et pelkää flashin kulumista, niin lataat vaan pienen osan listoja levyltä muistiin ja editoit sieltä ja flashiin taas takaisin kun editoitava kohta vaihtuu. Ei ehkä nopein mahdollinen tapa, mutta oiskohan siedettävän nopea tollasella. Oletan meinaan, ettei 32:n mahu koko editoitava data millään.. Toisaalta et varmaan halua tehdä koko edittiä flashilta, koska se on hidasta ainakin jossain määrin. Että ainakin vähän enemmän kuin pari editoitavaa tavua pitää ladata rammiin.

    Oon joskus ton tapasille tehnytkin softaa ja pallottelu oli sillon paljon just sen kanssa paljonko pitää muistissa ja miten kirjottelee flashille. Silloin selvisi aika simppeleillä rakenteilla vaikka pitää myöntää, ettei dataa ollut editissä ihan paria megaa. Eikä noita hetrsejäkään ihan noin paljoa vaikka ei kait mennyt ihan yksnumeroisiinkaan.

    Noi on palkitsevia juttuja kun ne saa tehtyä. Mulla se on jo it-iässä muinaishistoriaa, mutta kait ne samat periaatteet ovat jossain määrin ok.

    Thanks!

    Sainkin tossa suht hyvän vision toteutukseen:

    Alkuperäiseen tiedostoon laitetaan tageja niille kohdin, joita on
    muokattu. Eli jos tiedostoon halutaan lisätä merkkejä, esim:

    Plaah Plaah, cr

    ...lisätään merkkijono "Plooh"

    =

    Plaah Plooh Plaah, cr

    ...tehdään se seuraavasti, lisätään tagi alkuperäiseen tiedostoon ($-merkkiä tuskin kannattaa käyttää, ehkä jotain ASCIIn komentomerkkejä..)

    Plaah $1aah, cr

    $1 on tagi, mikä määrittää että editointipaikka "1" lisätään merkkijonoon:

    TAG no. 1 on siis:

    "Plooh" + "Pl"   Plaah Plh

    =

    Plaah Pl%%h

    Tulkki heittäisi kaikki % merkit roskiin.

    Näytöllä tutkiessa luettaisiin tagit ja muut merkit, ja tallentaessa tagit katoaisivat lopullisesti.
    Reilu sata tagin paikkaa riittäisi, editoinnit ovat suhteellisen vähäisiä... Ja tallennuksen jäkeen tagit olisivat taas vapaana. Ehkä tuota prosessia voisi ajaa taustalla työ-fileen, mutta tuskin maksaa vaivaa...

    Äänestä

  • Jepulis Jeep kirjoitti:

    No C64:n basicista en muista enää niin tarkasti sitä miten siinä allokoitiin suurempia muistialueita ilman pokea ja peekkiä, mutta mutta.. Joku linkitetty lista voisi sopia tuohon tarkoitukseen. Sillä hallitset koko hoitoa aika simppelillä tekniikalla eli ei vaadi kovinkaan kummallista koodia taakse. Puurakenteillakin sen saisi hoidettua, mutta itse hoitaisin homman niin simppelillä tavalla kuin mahdollista.

    Listarakenteessa on tietty se, että kovasti kun editoit niin fragmentoinnista voi tulla ongelmaa, mutta tuskin kovin nopeasti. Toisaalta jos on mahdollisuus putsata listaa aina silloin tällöin niin toi ei olisi ongelma. Ainakin noi editit, insertit ja copyt onnistuu tolla mallilla helposti.

    32 muistia rajoittaa, mutta jos et pelkää flashin kulumista, niin lataat vaan pienen osan listoja levyltä muistiin ja editoit sieltä ja flashiin taas takaisin kun editoitava kohta vaihtuu. Ei ehkä nopein mahdollinen tapa, mutta oiskohan siedettävän nopea tollasella. Oletan meinaan, ettei 32:n mahu koko editoitava data millään.. Toisaalta et varmaan halua tehdä koko edittiä flashilta, koska se on hidasta ainakin jossain määrin. Että ainakin vähän enemmän kuin pari editoitavaa tavua pitää ladata rammiin.

    Oon joskus ton tapasille tehnytkin softaa ja pallottelu oli sillon paljon just sen kanssa paljonko pitää muistissa ja miten kirjottelee flashille. Silloin selvisi aika simppeleillä rakenteilla vaikka pitää myöntää, ettei dataa ollut editissä ihan paria megaa. Eikä noita hetrsejäkään ihan noin paljoa vaikka ei kait mennyt ihan yksnumeroisiinkaan.

    Noi on palkitsevia juttuja kun ne saa tehtyä. Mulla se on jo it-iässä muinaishistoriaa, mutta kait ne samat periaatteet ovat jossain määrin ok.

    Löysin todella yksinkertaisen tavan toteuttaa editointi, laitanpa linkin tähän muidenkin nähtäväksi;

    http://scienceblogs.com/goodmath/2009/02/gap_buffers_or_why_bother_with_1.php

    Äänestä

Kommentoi aloitusta


.................... kirjoitti:

Tarvisi jonkun esimerkkikoodin simppelistä tekstieditorista perus-basicille. Ei viitsisi alkaa keksimään pyörää uudestaan...

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu