Hallo Pit,
na da liege ich ja sogar 3-mal falsch:
Pit hat geschrieben:Bei erster Sichtung fällt mit auf, dass Dein letztes Unicode-Zeichen bei 65633 auftaucht, aber in der Titelzeile steht ganz am Ende:
ENDE = A56320.
Ich dachte das Ende der Liste liegt bei 65536 und JA:
ENDE = A56320 ist ein Relikt.
Außerdem fehlt der Code, da ich diesen nicht im Dokument, sondern in meiner Makro-Bibliothek gespeichert habe.
Hier der Code (weiteres dazu siehe unten):
Code: Alles auswählen
REM ***** BASIC *****
REM Unicode-Zeichen per Inputbox
Sub EnterUnicodeChar
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
dim unicode as string
dim unicodeVal as long
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem read unicode from dialog box
unicode = INPUTBOX("Eingabe in dezimal- und hexdezimal-UniCode" & chr(10) & _
"Wenn hexadezimal, dann &H voranstellen:" & spc(7) & "&H000AE" & chr(10) & _
"Wenn dezimal, dann:" & spc(42) & "174", "Eingabe Unicodezeichen per dezimal- oder hexadezimal-Code","&H")
'unicode = INPUTBOX("Enter unicode in decimal form - or hexadecimal form, where it has to start with &H:", "Enter Unicode Character by its Decimal or Hexadecimal Code","&H")
rem print character in document
dim args7(1) as new com.sun.star.beans.PropertyValue
args7(0).Name = "Symbols"
unicodeVal = clng(unicode)
args7(0).Value = chr(unicodeVal)
args7(1).Name = "FontName"
args7(1).Value = "Lucida Sans Unicode"
dispatcher.executeDispatch(document, ".uno:InsertSymbol", "", 0, args7())
End Sub
REM Diese Makro fügt Unicode-Zeichen in die aktuell markierte Zelle ein
REM Dazu muss eine dezimal Zahl hinter der Variablen nCharDez= eingegeben werden
Sub HakenSchwarz
Dim oDoc as Object
Dim oCC as Object
Dim oSheet as Object
Dim oSel as Object
Dim nCharDez as Long
'Dim sFont as String
' dezimale Zeichencodes
' ✀ = 9984
' ✂ = 9986
' ✓ Häkchen = 10003
' ✔ Haken schwarz = 10004
' ✅ Haken weiß auf schwarzem Quadrat = 9989 (sehr interessant in LO wird ein schwarzes Quadrat gezeichnet, hier im Forum ein grünes :-)
' ✕ = 10005
' ✖ = 10006
nCharDez=10005
oDoc=ThisComponent
oCC=oDoc.getCurrentController()
' das aktive Sheet ermittlen
oSheet=oCC.getActiveSheet
' ausgewählte Zelle ermitteln
oSel=oDoc.CurrentSelection
' ' eingestellte Schriftart ermittlen
' sFont=oSheet.CharFontName
oSel.String=chr(nCharDez)
End Sub
Pit hat geschrieben:Da in der Liste komischerweise Lücken sind, gibt es wohl keine einfache Regel bezüglich meiner Anfrage.
Wie ich es schon beschrieben habe, nicht alle Schriftarten können alles korrekt darstellen,
bzw. einige Sonderzeichen existieren in dieser Schriftart nicht.
Es kann aber auch vorkommen, dass Unicode "xyz" z.B. für chinesische Zeichen (oder andre Zeichen) reserviert ist, usw.
Dies ist kein Grund zur Besorgnis.
Auf Windowsrechnern gibt aber auch noch andere Zeichen Codes
ASCII = 255 Zeichen
z.B.
https://www.petefreitag.com/cheatsheets/ascii-codes/
https://www.edv-lehrgang.de/ansi-zeichensatz/
WINDOWS (ISO1252) ANSI = 512 Zeichen
Je nach eingestelltem Gebietsschema (USA/ Deutsch/ China/...) wird die zu diesen Codes
gehörende Zeichentabelle geladen und das passende Tastaturlayout.
Siehe auch:
https://de.wikipedia.org/wiki/ISO_8859-15
Ich bin mir nicht sicher, aber ich glaube dies war die letzte Zeichensatzaktualisierung,
um z.B.. das €-Zeichen mit in die Zeichencode-Tabelle aufzunehmen.
--------------------------------------------------------------------------------------------------------------------------------------------------
Nun ist es also auf Windows-Rechner so, dass man im Grunde nicht weiß mit welchem Zeichensatz man gerade arbeitet.
Denn die Maschine macht schon...
TEST:
Ziffern nur auf der Zehnertastatur eingeben, sonst funktioniert dies nicht:
[ALT]+205 ═
[ALT]+0205 Í
Diese Kombis greifen auf die Windowstabellen zu, dabei entspricht die Ziffer ohne vorangestellte NULL dem ASCII-Standard.
Dieser Standard stammt noch aus MS-DOS-Zeiten.
--------------------------------------------------------------------------------------------------------------------------------------------------
Pit hat geschrieben:Ist das ein Relikt oder ein Hinweis, dass die Makros nur bis dahin arbeiten
Nein, beide Makros arbeiten
unabhängig von der Zeichenliste in der Tabelle.
Siehe auch die Kommentare im Code.
Pit erste Frage in diesem Thread hat geschrieben:1. Wie kann man Unicode per Tastatur in LO eingeben? (In Wordpad geht das mit ALT+U+Zahl anstandslos, z.B. mit 10015. Dasselbe geht so nicht in LO bzw. es resultiert ein anderes Zeichen)
Dazu nutze ich das erste Makro. Erstelle Dir einen Menüpunkt oder eine Symbolleiste und weise das Makro zu.
Zur Verwaltung siehe folgendes, damit kannst Du auch im Writer auf die Makros zugreifen:
- Erstelle Dir eine neue Bibliothek:
- MENÜ Extras → Makros → Makros verwalten... →LibreOffice Basic
- Im nächsten Fenster den Button "Verwalten", dann Register Bibliotheken unter Ort: "Meine Makros & Dialoge" auswählen.
- Nun auf den Button "Neu". Jetzt vergibst Dur einen Namen für die neue Bibliothek z.B. aUnicode.
Mit OK bestätigen.
- Das vorherige Fenster geöffnet lassen und ein neues Modulblatt anlegen:
- Auf Register "Module" und unter "Meine Module" die gerade erstellte Bibliothek markieren.
- Dann "Neu" und einen Modulnamen vergeben z.B: modUnicode
- Nirgends im Bereich der Makros darf mit Umlauten gearbeitet (mit Ausnahme in den Makro Kommentare).
- Jetzt das Fenster "Makros verwalten" schließen.
- Du siehst das Fenster "LibreOffice Basic Makros".
- Hier kannst Du nun das gerade erstellt Modulblatt auswählen (unter "Meine Makros" Bibliothek "aUnicode").
- Dann auf den Button "Bearbeiten".
- Die Basic-IDE öffnet sich und hier kannst Du den Code Modulblatt hineinkopieren.
- Stelle nun den Cursor in die erste Sub-Routine und führe den Code aus.
Pit zweite Frage in diesem Thread hat geschrieben:2. Ab welcher Zahl ist das resultierende Zeichen relativ stabil gegenüber Schriftartformatierung. (So liefert ü (252) in Windigs ein Häkchen, aber ansonsten ist es ein ü und die Schere in windings (35) ist sonst ein Doppelkreuz) - Oder gibt es ein anderes Trennmerkmal zwischen instabilen und relativ formatunabhängigen Symbolen?
Dieses habe ich versucht schon zu erklären. Es ist davon abhängig auf welche Zeichentabelle Du zugreifst.
Instabil ist hier nichts!
Es ist alles eine Frage womit man gerade arbeitet, nur ist dieses aus meiner Sicht nicht immer eindeutig.
ASCII, WINDOWS ANSI oder Unicode, obendrein noch das eingestellte Gebietsschema (deutsch, englisch, usw...) !
Das führt verständlicherweise zu Verwirrungen.
════════════════════════════════════════════════════════════════════════════════════════════
Früher unter MSDOS war es eindeutig: Ich arbeite mit MSDOS, dort wurde per Anweisung die deutsche Zeichentabelle geladen.
Diese bestand aus 255 Zeichen und per Zeichen auf der Tastatur und per [ALT]+Zehnertastatur konnte man auf alle Zeichen zugreifen.
Eine Ausnahme bildeten z.B. einige der Drucker-Steuerzeichen. Fertig.
Heute will ja jeder die "EIERLEGENDEWOLLMILCHSAU mit hübschen grünen Punkte" und wundert sich dann, dass es zu Verwirrungen kommt.
Ascii-Art. Als die Bilder noch nicht liefen...
Gruß
David