Am 30.01.2013 13:29, schrieb Nino Novak: > Hallo Jost, > > Am 30.01.2013 10:14, schrieb Jost Lange: > >> Könntest Du Dein Makro so interpretieren, damit sich andere auch >> weiterbilden können?
Ehrlich gesagt hab ich das ziemlich schnell hin geschmiert, ohne mir größere Gedanken darüber zu machen; sonst hätte ich zumindest noch einen kurzen Kommentar mit einer Beschreibung über den Zweck der Prozedur eingefügt; irgend was in der Art: | REM Liest einen markierten Text ein, und ersetzt diesen (sofern | REM möglich) durch das entsprechende Unicode-Zeichen. | REM Der markierte Text muss eine genau 4-stellige hexadezimale | REM Ziffernfolge darstellen. | REM Beispiel: '2212' -> Sigma-Zeichen o. ä. Und im Nachhinein betrachtet könnte man einige Variablen sowie die Prozedur selbst durchaus etwas [tm] sinnvoller benennen. Z. B. könnte ... >>> Sub UNICODE ... besser 'HEXSTR2UNICODE' heißen ... ;-/ >>> If IsNull( myAuswahl ) Then > > Falls nix markiert ist, Nein; falls bei der vorherigen Zuweisung kein Objekt zugewiesen werden konnte. Das kommt zwar nur gaaaaaaaanz selten vor, und wenn, ist das i. d. R. ein Signal dafür, daß die Rechnerhardware hoffnungslos überfordert ist. Aber Fehler sollten nun mal grundsätzlich abgefangen werden, egal wie (un)wahrscheinlich sie sind. Irgendwo und irgendwann *werden* sie auftreten (man Murphys Law). > ansonsten (also WENN irgendwas markiert ist) >>> Dim myInhalt as Object Besser: 'myMarkierung'. > deklariere die Variable myInhalt ebenfalls als Objekt > >>> myInhalt = myAuswahl.getByIndex(0) > > und weise ihr den ersten Teil (Abschnitt? Portion?) der Auswahl zu Die /erste/ Markierung. OO erlaubt grundsätzlich das Markieren /mehrerer/ Textabschnitte gleichzeitig; das muss von dem Objekt natürlich berücksichtigt werden. > (vermutlich kann eine Auswahl aus mehreren Teile bestehen, > möglicherweise, wenn nicht-zusammenhängende Objekte mittels > Strg+Markierung zusammen markiert wurden) Genau. >>> If IsNull( myInhalt ) Then > > Falls myInhalt ein leeres Objekt ist, Yepp (s. o.). >>> myCode = myInhalt.getstring() > > und weise ihr den Inhalt der Variable myInhalt zu. Welche direkt die (erste; s. o.) Markierung im Text repräsentiert. >>> myValue = clng( "&H"&myCode ) > > und weise ihr die (nach Long konvertierte, also dezimale) Zahl zu, die > sich aus (der Hexadezimalzahl) "&H" und myCode ergibt Aus myCode, ja; das '&H' ist nur ein Präfix, welches dem Compiler signalisiert, daß es sich hier um eine hexadezimale Darstellung handelt. Bei einem Wert wie '221A' (Wurzelzeichen) wäre das zwar offensichtlich, aber woran könnte er das bei einem Wert wie z. B. '2212' (Sigma- oder Summenzeichen) erkennen? >>> myCode = Chr( myValue ) > > weise der Variable myCode das ASCII-Zeichen zum Wert myValue zu > >>> myInhalt.setstring ( myCode ) > > und überschreibe damit den Inhalt der Variable myInhalt Den Text, auf den das Objekt myInhalt verweist; oder kurz gesagt der markierte Text (daher wäre 'myMarkierung' ein besserer Variablenname; s. o.). Übrigens hätte man diese beiden Zeilen auch problemlos zusammenfassen können: | myInhalt.setstring ( Chr( myValue ) ) > Passt das so? Ja. Wolf '<kopfschüttelnd> da hab ich ja was losgetreten ... :-/ </kopfschüttelnd>' gang -- -- Informationen zum Abmelden: E-Mail an [email protected] Probleme? http://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/ Tipps zu Listenmails: http://wiki.documentfoundation.org/Netiquette/de Listenarchiv: http://listarchives.libreoffice.org/de/users/ Alle E-Mails an diese Liste werden unlöschbar öffentlich archiviert
