ITextRange::SetChar-Methode (tom.h)

Legt das Zeichen an der Anfangsposition des Bereichs fest.

Syntax

HRESULT SetChar(
  long Char
);

Parameter

Char

Typ: long

Neuer Wert für zeichen an der Startposition.

Rückgabewert

Typ: HRESULT

Die -Methode gibt einen HRESULT-Wert zurück. Wenn die Methode erfolgreich ist, wird S_OK zurückgegeben. Wenn die Methode fehlschlägt, gibt sie einen der folgenden Fehlercodes zurück. Weitere Informationen zu COM-Fehlercodes finden Sie unter Fehlerbehandlung in COM.

Rückgabecode Beschreibung
E_ACCESSDENIED
Text ist schreibgeschützt.
E_OUTOFMEMORY
Nicht genügend Arbeitsspeicher.

Hinweise

Mit ITextRange::SetChar können Sie den zu verwendenden genauen Zeichencode angeben. Zeichenfolgenliterale mit ähnlich aussehenden Glyphen können jedoch irreführend sein.

Die von dieser Methode festgelegten Zeichen sind LONG anstelle eines BSTR. Dadurch wird die Art und Weise ausgeblendet, wie sie im Sicherungsspeicher gespeichert werden (als Bytes, Wörter, variable Länge usw.).

Auf Systemen, die keine automatische Wortumbruchung haben, werden Dokumente häufig nur für Zeilenumbrüche harter Wagen eingefügt. Der folgende Code zeigt eine einfache, aber nicht perfekte Möglichkeit, solche harten Wagenrückläufe in Leerzeichen für die Story zu konvertieren, die dem Bereich r zugeordnet ist.

    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

Alternativ können Sie folgendes in der IF-Schleife verwenden.

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

Dieser Ansatz ermöglicht es Ihnen, den Text in eine andere Breite umzuschließen. Der Algorithmus ist jedoch nicht perfekt: Er geht davon aus, dass ein harter Wagenrücklauf, auf den alles andere als Leerzeichen folgt (leer, Tabulator, Zeilenvorschub, Wagenrücklauf usw.) durch einen Leerzeichen ersetzt werden sollte. Der Algorithmus geht auch davon aus, dass das Wagenrückgabezeichen ein einzelnes Zeichen wie wagenrücklauf oder das Unicode-Ende des Absatzes (EOP) 0x2029 Zeichen ist. Außerdem ist die Kombination aus Wagenrücklauf und Zeilenvorschub nicht identisch und erfordert das Schreiben und Ausführen von mehr Code (oder verwenden Sie FindText(^p)). Eine weitere Vorsicht ist, dass es andere Fälle gibt, z. B. gemischten Code und Dokumentationen, in denen der Algorithmus nicht ordnungsgemäß funktioniert.

ITextRange::SetChar ist jedoch effizienter als ein Ersetzungsvorgang, der durch einen Löschvorgang gefolgt von einer Einfügung erreicht wird. Daher wäre das Umschreiben des Codes ohne Verwendung von ITextRange::SetChar wahrscheinlich viel langsamer.

Die Char-Eigenschaft , die die meisten Aktionen ausführen kann, die eine Zeichensammlung ausführen kann, hat zwei große Vorteile: Sie kann auf jedes Zeichen im übergeordneten Textabschnitt verweisen, anstatt auf den übergeordneten Bereich beschränkt zu sein, und sie ist deutlich schneller, da LONG-Objekteanstelle von Bereichsobjekten beteiligt sind. Aufgrund dieser Vorteile unterstützt das Textobjektmodell (Text Object Model, TOM) keine Characters-Auflistung.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile tom.h
DLL Msftedit.dll

Siehe auch

Konzept

ITextRange

Referenz

Textobjektmodell