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 |
---|---|
|
Text ist schreibgeschützt. |
|
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
Referenz