Hi Tim,

REMOVE removes by default the first element of a series. So when you say

    remove first fp

the first element of FP is a string, and REMOVE will remove the first
element of that string. You want to zap the whole string, I take it,
so you should do:

    remove fp

Here's a function based on your code to do what you want. I changed
remove-flag to a true/false flag, which is easier to test for. Also,
when you go through a series deleting some items and skipping others,
FORALL doesn't give you enough control. You have to use

    while [ not tail? series-value ] [ ... ]

and use either NEXT or REMOVE every time you go through the loop.

remove-text: func [fp [file!]][
    fp: open/lines fp
    remove-flag: false
    lines-done:  0
    while [ not tail? fp ] [
        if find first fp "begin insert here" [
            print "found"
            remove-flag: true
        ]
        either remove-flag [
            either find first fp "end insert here" [
                remove-flag: false
                print "done"
                fp: next fp
            ][
                either zero? lines-done [
                    print "setting lines-done"
                    lines-done: 1
                    fp: next fp
                ][
                    print ["Removing " first fp]
                    remove fp
                ]
            ]
        ][
            fp: next fp
        ]
    ]
    update fp
    close fp
]

See you,
Eric

Reply via email to