INFO: Funktion Unterschiede zwischen ASC, AscB/AscW und Chr, ChrB/ChrW

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 145745 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

Zusammenfassung

Für Jahre haben BASIC-Programmierer die ASC und Chr Funktionen aufrufen und bearbeiten das ASCII-Zeichensatz. Mit der Einführung von Unicode-Annahme in gängigen Betriebssystemen und Anwendungen hat die Notwendigkeit einer verbesserten die Funktionen ASC und Chr-Versionen entwickelt. Um diese Anforderung erfüllen, enthält Microsoft Visual Basic (4.0 und höher) für Windows die AscB-ChrB und AscW-ChrW Funktionen.

Weitere Informationen

Unicode ist ein Standard, die den ANSI-Standard zum Codieren von Zeichen in einem numerischen Formular ersetzen. Da die ANSI-standard ein einzelnes Byte nur, verwendet um einzelnen Zeichen darstellen, ist es auf ein Maximum von 256 verschiedene Zeichen beschränkt. Obwohl dies für die Anforderungen einer Englisch sprechen Zielgruppe ausreichend ist, fällt es kurze, wenn der Markt weltweit Software als betrachtet wird. Mit den Unicode-Standard wird jedes Zeichen wird durch zwei Bytes dargestellt, so, dass der gesamte Unicode-Zeichensatz enthält 65.536 mögliche Speicherorte.

Microsoft Windows NT, Microsoft Windows 2000 und Microsoft OLE 2.0 sind vollständig Unicode-basiert und Visual Basic (4.0 und höher) alle Zeichenfolgen intern in Unicode-Format dar. Die Funktionen AscW und ChrW ermöglichen Zugriff auf die vollständige Unicode-Zeichen. Diese Funktionen funktionieren auf dieselbe Weise wie die ursprünglichen Funktionen ASC und Chr, außer, dass Argumente aus 0 und 65.535 statt einfach von 0 bis 255 unterstützen. Viele Visual Basic-Objekte (wie z.B. das Debugfenster und das Feld Bezeichnungsfeld- und Textfeld) zurückgeben ein "?" Wenn diese Objekte nicht wissen, wie ein Unicode-Zeichen anzeigen.

Da alle Zeichenfolgen intern nun im Unicode-Format dargestellt werden, ist es nicht so einfach, wie er, verwendet um binäre Daten in eine Zeichenfolge darzustellen. Mit die Funktion Chr Zuweisen von Daten zu einer Zeichenfolge führt nicht das gleiche Verhalten wie vor. Beispiel:
   stringvar = Chr(65)
				

Ergebnisse in eine lange Zeichenfolge zwei Byte, wobei 1 Byte einen Wert von 65 und Byte 2 hat hat einen Wert von 0 (Dies ist die Unicode-Darstellung der Buchstaben "A"). Müssen Sie bedenken, dass Konvertierung von ANSI in Unicode nicht immer einfach ein zweites Byte mit einem Wert von 0 (null) hinzufügen erzeugen ist, wie in diesem Fall wird. Beispielsweise verfügen die meisten der ANSI-Zeichencodes im Bereich von 130 159 völlig anderen Unicode-Werte. Versuchen Sie es ausführen "Debug.Print AscW(Chr(130))", und Sie den Wert 8218 angezeigt.

Aktuell, erfordert Microsoft Windows ein wenig endian-Prozessor, d. h., dass das erste Byte in einer mehrere Byte Entität das niederwertigste ist und Bedeutung in aufeinander folgenden Bytes erhöht. Dies erklärt, warum das Unicode-Zeichen "A" als die folgenden intern dargestellt wird:
   -------------------
   |   65   |    0   |
   -------------------
     byte 0     byte 1
				

Die Funktionen AscB und ChrB können verwendet werden, was verwendet, um durch die Funktionen ASC und Chr erreicht werden, da diese Funktionen ermöglichen es die Manipulation der Einzelbyte-Mengen zu replizieren. Wenn Sie eine 4-Byte-Zeichenfolge mit die binären Werten 65, 66, 67 und 68 fortlaufend können dann die Chr-Funktion nicht verwenden. Sie müssen stattdessen die ChrB-Funktion verwenden. Beispiel:
   stringvar = ChrB(65) & ChrB(66) & ChrB(67) & ChrB(68)
				

Alternativ können Sie die Möglichkeit zum Erstellen von Arrays von den neuen Datentyp Byte und Bearbeiten von binären Daten auf diese Weise.

Finden Sie unten eine Erklärung der Ergebnisse der einfachen Verwendungszwecke für diese Funktionen genauer diese Informationen.

Drucken von Asc(Chr(255))--> "255"

Nichts Neues hier mit der Ausnahme, dass die Chr-Funktion ein Unicode-Zeichen zurückgibt, anstatt ein ein-Byte ANSI-Zeichen zwei Bytes belegt.

Drucken von Asc(ChrB(255))--> - 5 Ungültiger Prozeduraufruf.

Diese Syntax gibt einen Fehler da ASC-Funktion immer mindestens eine zwei-Byte-Parameter erwartet und ChrB-Funktion ist nur ein einzelnes Byte zurückgeben zurück.

Drucken von Asc(Chr(256))--> - 5 Ungültiger Prozeduraufruf.

Obwohl die Chr-Funktion ein Zweibyte-Unicode-Zeichen zurückgibt, dauert es weiterhin nur Zahlen zwischen 0 und 255 für das Argument (Beachten Sie, dass auf einem System aktiviert DBCS ASC-Chr zwei-Byte-DBCS-Zeichen verarbeiten zu und von Unicode zu konvertieren). Mit der ChrW-Funktion ermöglicht Zugriff auf die vollständige 65.536 Unicode-Zeichen-Speicherorte.

Drucken von AscW(ChrW(256))--> "256"

Dies ist die neue Version der ersten Anweisung in diesem Abschnitt. ChrW-Funktion nimmt einen Wert von 0 bis 65.536 und gibt Sie das Zeichen (auf 32-Bit-Systemen) zurück. Die AscW-Funktion interpretiert diese 2-Byte-Zeichen als Unicode-Zeichen und gibt den richtigen Unicode-Wert für das Zeichen zurück.

Drucken von Asc(ChrW(256))--> "65"
Drucken von Asc(ChrW(5000))--> "63"

Was geschieht hier ist die ChrW-Funktion zuerst ausgewertet wird. ChrW(256) ist das Zeichen "A" und so die Funktion auf Asc("A") reduziert und die Unicode (und ANSI) Anzahl "A" 65 ist. Da Visual Basic nicht wissen zum Anzeigen des durch den Chr(5000) nur zeigt dargestellten Zeichen ein "?", und wie erwartet, die Unicode und ANSI Wert für "?" ist 63.

Drucken von AscB(Chr(65))--> "65"
Drucken von AscB(ChrW(256))--> "0"
Drucken von AscB(ChrW(257))--> "1"
Drucken von AscB(ChrW(555))--> "43"
Drucken von AscB(ChrW(65535))--> "255"

Alle diese Werte erläutert werden können, verstehen, wie jedes Zeichen intern dargestellt wird zurückzugeben (Siehe den obigen little-Endian-Verweis) und durch die Tatsache, die AscB-Funktion nur auf das erste Byte der das Zeichen sucht er empfängt. Visuell sieht es wie im folgenden Diagramm:
             -------------------
   Chr(65)   |   65   |    0   |
             -------------------
   Chr(256)  |    0   |    1   |
            -------------------
   Chr(257)  |    1   |    1   |
             -------------------
   Chr(555)  |   43   |    1   |
             -------------------
   Chr(65535)|   255  |  255   |
             -------------------
               byte 0    byte 1
				

Die AscB-Funktion gibt einfach zurück, was das erste Byte des Zeichens ist.

Drucken ChrB(65)--> ""

Visual Basic druckt nichts für diesen Aufruf an die ChrB-Funktion, da die ChrB-Funktion nur eine ein-Byte-Zeichenfolge zurückgibt. Ein Byte-Zeichenfolgen wie folgt bedeuten nichts zu Visual Basic, da Sie keinen gültigen Unicode-Zeichen (oder eine Reihe von Zeichen) bilden.

Drucken ChrB(65) & ChrB(0)--> "A"

In diesem Fall sind wir zwei 1-Byte-Zeichenfolgen in einer einzelnen zwei-Byte-Zeichenfolge verketten. Da das resultierende Bitmuster Bitmuster für Unicode "A" identisch ist, ist, welche Visual Basic druckt.

Eigenschaften

Artikel-ID: 145745 - Geändert am: Mittwoch, 7. Mai 2003 - Version: 2.0
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Visual Basic 5.0 Learning Edition
  • Microsoft Visual Basic 6.0 Learning Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • Microsoft Visual Basic 4.0 Standard Edition
  • Microsoft Visual Basic 4.0 Professional Edition
  • Microsoft Visual Basic 4.0 Professional Edition
  • Microsoft Visual Basic 4.0 16-Bit Enterprise Edition
  • Microsoft Visual Basic 4.0 32-Bit Enterprise Edition
Keywords: 
kbmt kbinfo KB145745 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 145745
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com