Metodo ITextRange::SetChar (tom.h)

Imposta il carattere nella posizione iniziale dell'intervallo.

Sintassi

HRESULT SetChar(
  long Char
);

Parametri

Char

Tipo: long

Nuovo valore per il carattere nella posizione iniziale.

Valore restituito

Tipo: HRESULT

Il metodo restituisce un valore HRESULT . Se il metodo ha esito positivo, restituisce S_OK. Se il metodo ha esito negativo, restituisce uno dei codici di errore seguenti. Per altre informazioni sui codici di errore COM, vedere Gestione degli errori in COM.

Codice restituito Descrizione
E_ACCESSDENIED
Il testo è protetto da scrittura.
E_OUTOFMEMORY
Memoria insufficiente.

Commenti

ITextRange::SetChar consente di specificare il codice di carattere preciso da usare. Tuttavia, i valori letterali stringa con glifi simili possono essere fuorvianti.

I caratteri impostati da questo metodo sono LONG anziché un BSTR. Ciò nasconde il modo in cui vengono archiviati nell'archivio di backup, come byte, parole, lunghezza variabile e così via.

Spesso nei sistemi che non hanno il wrapping automatico delle parole, i documenti hanno ritorno a capo rigido inserito solo per le interruzioni di riga. Il codice seguente mostra un semplice, ma non perfetto, modo per convertire tale capo rigido torna in spazi vuoti per la storia associata all'intervallo r.

    Sub EnableWrap(r As ITextRange)   // Convert false hard CRs to soft
        r.SetRange 0, 0               // r is set at start of story
        While r.Move(tomParagraph)    // Go to start of next paragraph
            If r.MoveWhile(C1_WHITE, 1) = 0 Then    // Next char isn't white space
                r.Move tomCharacter, -1
                r.SetChar = Asc(" ")    // Replace CR by blank
            End If
        Wend        // Loop till no more CRs in story
    End Sub

In alternativa, è possibile usare quanto segue all'interno del ciclo IF.

r.MoveStart tomCharacter, -1        // Select previous char (the CR)
r = " "        // Replace it with a blank

Questo approccio consente di eseguire il wrapping del testo in altre larghezze. Tuttavia, l'algoritmo non è perfetto: presuppone che un ritorno a capo duro seguito da qualsiasi spazio vuoto (vuoto, scheda, feed di linee, ritorno a capo e così via) deve essere sostituito da un vuoto. L'algoritmo presuppone inoltre che il carattere restituito a capo sia un singolo carattere come il ritorno a capo o il carattere end-of-paragrafo Unicode (EOP) 0x2029 carattere. Inoltre, la combinazione di ritorno a capo e feed di riga non corrisponde e richiederebbe la scrittura e l'esecuzione di più codice (o uso FindText(^p)). Un'altra attenzione è che esistono altri casi, ad esempio codice misto e documentazione, in cui l'algoritmo non funziona correttamente.

Tuttavia, ITextRange::SetChar è più efficiente di un'operazione di sostituzione eseguita da un'eliminazione seguita da un inserimento. Pertanto, riscrivere il codice senza usare ITextRange::SetChar probabilmente sarebbe molto più lento.

La proprietà Char , che può eseguire la maggior parte delle operazioni che un insieme di caratteri può, ha due grandi vantaggi: può fare riferimento a qualsiasi carattere nella storia padre anziché essere limitato all'intervallo padre, ed è significativamente più veloce , poiché longs anziché oggetti range sono coinvolti. A causa di questi vantaggi, il modello a oggetti di testo (TOM) non supporta una raccolta di caratteri.

Requisiti

Requisito Valore
Client minimo supportato Windows Vista [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione tom.h
DLL Msftedit.dll

Vedi anche

Informazioni concettuali

ITextRange

Riferimento

Modello a oggetti testo