LINEDEL rivien valikoituun poistoon

[viesti Survo-keskustelupalstalla (2001-2013)]

Kirjoittaja: Seppo Mustonen
Sähköposti:    -
Päiväys: 9.12.2003 9:29

Survossa on monenlaisia keinoja keskeisen työtilan, toimituskentän
siivoamiseen.
Tähän käytetään mm. komentoja SCRATCH, CLEAR, ERASE ja DELETE sekä
nappeja DEL (F10), alt-F10 ja alt-F4 (tekstilohkojen siirto ja poisto).
Ainoa valikoituun rivien poistoon tarkoitettu väline (ellen nyt muista
väärin) on ollut sukrokomento
/DELLIN <merkki> 
jolla poistetaan komentorivin alapuolelta kaikki ne rivit, joissa on
<merkki> kontrollisarakkeessa.

Varsinkin uuden FILE MEDIT:in yhteydessä (tietojen poiminta FILE MEDIT
-sivuilta EDT-tiedostoon) huomasin, että on tarvetta yleiseen,
valikoivaan rivien poistokomentoon, jonka nimeksi otin LINEDEL.

Päävaihtoehdot ovat seuraavat:
LINEDEL L1,L2
poistaa rivit L1-L2, jolloin rivi L2+1 siirtyy rivin L1 paikalle,
L2+2 rivin L1+1 paikalle jne.

LINEDEL L1,L2,EMPTY
poistaa kaikki tyhjät rivit välillä L1-L2.

LINEDEL L1,L2,<merkkijono> / Esim. LINEDEL CUR+1,END,ABC
poistaa väliltä L1-L2 kaikki sellaiset rivit, joiden kontrolli-
sarakkeessa on jokin merkkijonoon kuuluvista merkeistä (esimerkissä
A,B tai C).
Tämä on suora yleistys /DELLIN-sukrosta ja sitä olennaisesti nopeampi.

LINEDEL L1,L2,"<merkkijono>" / Huom. lainausmerkit!
poistaa väliltä L1-L2 ne rivit joilla esiintyy <merkkijono> täsmälleen
komennossa esitetyssä muodossa. <merkkijono>lla voi olla myös varjo-
merkkejä, jolloin poisto kohdistuu vain niihin riveihin, joissa myös
varjomerkit täsmäävät.

LINEDEL L1,L2,STEP,k / missä k on positiivinen kokonaisluku
poistaa rivit L1,L1+k,L1+2k,L1+3k,... riviin L2 asti.

Lisäksi kaikissa vaihtoehdoissa (EMPTY-muotoa lukuunottamatta, jossa
se on aiheetonta) on lupa antaa täsmennys
DEL_SAVE=<uuden_EDT-tiedoston_nimi> 
jolloin poistetut rivit tallentuvat suoraan tuon tiedoston alkuun.
Näin FILEDEL sopii myös toimituskentän rivien valikoituun tallennukseen,
mikä vielä lisännee sen käyttöarvoa.


Seuraava kontrollimerkkien perusteella tapahtuva poisto antaa käsityksen
LINEDEL:in toiminnasta:

    1 *SAVE DELKOE
    2 *
    3 *LINEDEL 5,12,A B / DEL_SAVE=DEL1
    4 *
    5 * Rivi 5
    6 A Rivi 6
    7 * Rivi 7
    8 B Rivi 8
    9 B Rivi 9
   10 C Rivi 10
   11   Rivi 11 (Myös tämä poistuu, koska merkkijono sisälsi "tyhjän".)
   12 * Rivi 12
   13 A Rivi 13
   14 B Rivi 14

Kun rivillä 3 oleva LINEDEL aktivoidaan, toimituskentän alku muuntuu
seuraavaksi:

    1 *SAVE DELKOE
    2 *
    3 *LINEDEL 5,12,A B / DEL_SAVE=DEL1
    4 *
    5 * Rivi 5
    6 * Rivi 7
    7 C Rivi 10
    8 * Rivi 12
    9 A Rivi 13
   10 B Rivi 14

ja poistetut rivit löytyvät tiedostosta DEL1.EDT muodossa

    1 *SAVE DEL1 / Deleted lines from DELKOE
    2 A Rivi 6
    3 B Rivi 8
    4 B Rivi 9
    5   Rivi 11 (Myös tämä poistuu, koska merkkijono sisälsi "tyhjän".)

Koska alkuperäisen toimituskentän ensimmäisellä rivillä oli talletus-
komento SAVE DELKOE, kentän nimi näkyy DEL1-kentän ensirivin
kommentissa.
Vaikka rivejä poistuikin toimituskentästä DELKOE, vastaava talletettu
muoto on vielä ennallaan eikä siis FILEDEL ole kajonnut itse tiedostoon.
Jos käyttäjä haluaa tallettaa syntyneen supistuneen kentän, hänen
tulee luonnollisesti aktivoida komento SAVE DELKOE.

LINEDEL tulee olemaan mukana SURVO MM:ssä versiosta 2.06 eteenpäin.

Kertokaa ja perustelkaa, jos haluatte vielä muitakin ominaisuuksia
LINEDEL-komennolle.

Seppo Mustonen

Vastaukset:

Survo-keskustelupalstan (2001-2013) viestit arkistoitiin aika ajoin sukrolla, joka automaattisesti rakensi viesteistä (yli 1600 kpl) HTML-muotoisen sivukokonaisuuden. Vuoden 2013 alusta Survo-keskustelua on jatkettu entistäkin aktiivisemmin osoitteessa forum.survo.fi. Tervetuloa mukaan!

Etusivu  |  Keskustelu
Copyright © Survo Systems 2001-2013. All rights reserved.
Updated 2013-06-15.