Tarvisi jonkun esimerkkikoodin simppelistä tekstieditorista perus-basicille. Ei viitsisi alkaa keksimään pyörää uudestaan...
Tekstieditorin ohjelmointi
....................
7257
0Äänestä
Muut lukivat myös
Odottaa vastausta
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
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ä.
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.
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.
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...
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