Problem with Events.Remove()

Rosebud wrote on 6/29/2004, 12:46 AM
Hi,
With the following script (it’s a part of a bigger script), I want to remove all Events in Time Line selection.
When I run script, not all Events are removed.
Please, what I’m doing wrong ?
Thank for your help.

//*************************

import System;
import System.IO;
import System.Windows.Forms;
import Sony.Vegas;


try
{
var selectStart = Vegas.SelectionStart;
var selectEnd = Vegas.SelectionStart + Vegas.SelectionLength;


for (var currentTrack : Track in Vegas.Project.Tracks)
{
// Process all non selected events on tracks
for (var currentEvent : TrackEvent in currentTrack.Events)
{

if (!currentEvent.Selected)
{
//MessageBox.Show(evnt.Start + " / " + evnt.End);
if ((currentEvent.Start >= selectStart) & (currentEvent.End <= selectEnd))
{
currentTrack.Events.Remove(currentEvent);
}
}

}
}

} catch (e)
{
MessageBox.Show(e);
}

//**************************

Comments

Rosebud wrote on 6/29/2004, 4:39 AM
Well, i found a solution:

import System;
import System.IO;
import System.Windows.Forms;
import Sony.Vegas;


try
{
var selectStart = Vegas.SelectionStart;
var selectEnd = Vegas.SelectionStart + Vegas.SelectionLength;



for (var currentTrack : Track in Vegas.Project.Tracks)
{
var eventToRemove = new Array();
// Process all non selected events on tracks
for (var currentEvent : TrackEvent in currentTrack.Events)
{

if (!currentEvent.Selected)
{
//MessageBox.Show(evnt.Start + " / " + evnt.End);
if ((currentEvent.Start >= selectStart) & (currentEvent.End <= selectEnd))
{
eventToRemove.push(currentEvent);
}
}

}
// Remove the Events
for (var i=0 ; i<eventToRemove.length ; i++)
{
//MessageBox.Show(i);
currentTrack.Events.Remove(eventToRemove[i]);
}
}

} catch (e)
{
MessageBox.Show(e);
}
jetdv wrote on 6/29/2004, 5:52 AM
Yes, your solution will work. The "problem" is that when you remove an event, ALL events then shift left. So if you went through the entire list deleting EVERY event, you would actually delete EVERY OTHER event.

An alternate solution is to go through the list BACKWARDS.