Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [VB2005] Problema con String.LastIndexOf

    Ho una RichTextBox di nome rtbCode. All'evento TextChanged, vi è posto questo codice:
    codice:
            If rtbCode.SelectionStart > 0 Then
                Dim Start As Int32 = rtbCode.SelectionStart
    
                'Trova il < d'inizio.
                Dim OpeningTag As Int32 = rtbCode.Text.LastIndexOf("<", 0, Start - 1)
                'Se c'è, controlla che sia di questo tag
                If OpeningTag = -1 Then
                    Exit Sub
                End If
    
    '...
    Quando ho terminato di scrivere "<ht" (per "<html>"), viene segnalato un errore, un'eccezione di tipo ArgumentOutOfRangeException, riferito a "Start - 1", il parametro count della funzione LastIndexOf. Non ho usato Find per alcuni motivi che non sto a spiegare. Il problema è che questa eccezione non dovrebbe essere generata. Infatti dall'esempio si nota, anche inserendo breakpoints nel codice, che il testo è "<ht", ossia una stringa non nulla: per cui il parametro startIndex è a posto. Si nota inoltre che, dopo aver digitato tale testo, SelectionStart vale 3 (indica la posizione successiva a "t", ossia 2+1) e indica il carattere non ancora scritto (è per questo che ho messo -1): in definitiva, la funzione viene richiamata sull'analisi dei primi 2 caratteri della stringa "<ht" a partire dal primo, a indice 0. Quindi non capisco dove sia l'errore. C'è qualcuno che mi illumini?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ma la LastIndexOf non cerca a ritroso a partire dalla posizione indicata nel secondo parametro per i caratteri indicati nell'ultimo?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    No, cito da msdn:
    "Reports the index position of the last occurrence of a specified String within this instance. The search starts at a specified character position and examines a specified number of character positions."
    Si limita a cercare l'ultima occorrenza di una sottostringa in una data stringa, partendo dalla posizione indicata nel secondo parametro per un numero di caratteri pari al terzo.
    E comunque, se anche fosse vero quello che hai detto, non ci sarebbero dovuti essere errori poichè 2 è un indice adatto (la stringa ha 3 caratteri) e 0 è pur sempre una lunghezza contemplata.
    E continuo ad arrovellarmi...

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da Il Totem
    No, cito da msdn:
    "Reports the index position of the last occurrence of a specified String within this instance. The search starts at a specified character position and examines a specified number of character positions."
    Questa frase ti dice che la ricerca parte da un carattere e che vengono esaminati un certo numero di caratteri ma non ti dice nulla sul verso della ricerca. Infatti, se leggi un po' dopo ...

    "The search begins at the startIndex character position of this instance and proceeds backwards towards the beginning until either value is found or count character positions have been examined."
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.