Bonjour,

Je travail sur une extension pour Open Office, écrite principalement en
StarBasic, il s'agit d'un correcteur. J'ai un comportement assez étrange que
je n'arrive pas à m'expliquer et encore moins à corriger. Lors du parcours
d'une document (ou d'une portion de texte), l'extension commence par le
"bas" du document et non par le début.

Voilà comment s'effectue cet itération "à l'envers":

    Dim oCursors(), i%
    If Not CreateFullTextIterator(ThisComponent, oCursors()) Then Exit Sub
    For i% = LBound(oCursors()) To UBound(oCursors())
        CheckWord(oCursors(i%, 0), oCursors(i%, 1), ThisComponent.Text)
    Next

J'ai essayé d'inverser LBound et UBound, sans succès. Je pense que le
problème est dans la création de l'itérateur:

Function CreateFullTextIterator(oDoc As Object, oCursors()) As Boolean
    Dim oLCurs 'Cursor to the left of the current selection.
    Dim oRCurs 'Cursor to the right of the current selection.

    CreateFullTextIterator = True
    oLCurs = oDoc.getText().createTextCursor()
    oLCurs.gotoStart(False)
    oRCurs = oDoc.getText().createTextCursor()
    oRCurs.gotoEnd(False)
    oCursors = DimArray(0, 1)
    oCursors(0, 0) = oLCurs
    oCursors(0, 1) = oRCurs
End Function

J'avoue ne pas très bien comprendre cette notion de curseurs. Il y'a une
inversion quelques part (vraisemblablement) mais après moult essaie, je n'ai
pas réussi à trouver d'où vient le problème... Une idée ?




-- 
Romain PELISSE,
"The trouble with having an open mind, of course, is that people will insist
on coming along and trying to put things in it" -- Terry Pratchett
http://belaran.eu/

Répondre à