String Formatierung - lesen und Darstellen von Symbolen

  • String Formatierung - lesen und Darstellen von Symbolen

    Hallo Mädels.

    Ein Menu Item hat als keyEquivalent das Symbol " ↘". // Habs korrigiert.

    Der keyEquivalent ist laut NSMenuItem Doku ein NSString
    Wenn ich den keyEquivalent im Log abfrage wird ein anderes Symbol dargestellt.

    Quellcode

    1. NSMenu * mainMenu = [[NSApplication sharedApplication] mainMenu];
    2. int a =4;
    3. int b =1;
    4. NSString *keyEquivalent = [[[[[[mainMenu itemArray] objectAtIndex:a]submenu]itemArray] objectAtIndex:b] keyEquivalent];
    5. NSLog(@"keyEquivalent: %@",keyEquivalent);



    Wie muss muss man formatieren, damit im Log das Symbol richtig dargestellt wird?
    Gruss zuko

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von zuko ()

  • Ok wenn ich es in einem Textfeld ausgebe wie muss dann konvertiert werden?

    Ich bekomme unterschiedliche Werte wenn ich den unichar abfrage.

    Brainfuck-Quellcode

    1. NSLog(@"String: %i ",[@"↘" characterAtIndex:0]); //ergibt eine unichar mit dem Wert 8600
    2. ----------
    3. NSMenu* mainMenu = [[NSApplication sharedApplication] mainMenu];
    4. int a =4;
    5. int b =1;
    6. NSString *keyEquivalent = [[[[[[mainMenu itemArray] objectAtIndex:a]submenu]itemArray] objectAtIndex:b] keyEquivalent];
    7. NSLog(@"unichar: %i ",[keyEquivalent characterAtIndex:0]);
    8. // ergibt einen unichar mit dem Wert 63275
    Alles anzeigen
    Gruss zuko
  • Doch das ist das System Font Lucida Grande mit dem Zeichen Glyph 930 U+2198 SOUTH EAST ARROW
    Ausser Xcode benutzt einen anderen Font/ Glyph wenn ich dem Menu den keyEquivalent zuweise.

    edit: Das Zeichen im Eingangsbeitrag ist ein anderes.
    Gruss zuko

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von zuko ()

  • Auch wenn ich über NS Event die unichar des Characters (ignoringModifiers) abfrage bekomme ich den selben Wert wie beim keyEquivalent im Menu. =63275

    Quellcode

    1. -(void)keyDown:(NSEvent *)theEvent{
    2. int len = [[theEvent charactersIgnoringModifiers] length];
    3. unichar uc = [[theEvent charactersIgnoringModifiers] characterAtIndex:0];
    4. NSLog(@"keyCode: %u characters: %@ IgnoringModifiers: %@ length: %i unichar: %i flags: %lu ",[theEvent keyCode], [theEvent characters], [theEvent charactersIgnoringModifiers],len,uc,[theEvent modifierFlags]);
    5. }



    Ich finde im Netz dazu keine Antwort und die Bücher die ich hab behandeln das Thema nicht. ;(
    Gruss zuko
  • WTF hast du eigentlich vor? 8|
    [theEvent charactersIgnoringModifiers] liefert dir doch angeblich einen String.
    Du weißt angeblich, um welches Zeichen es sich handelt.

    Warum vergleichst du nicht also einfach den String mit dem erwarteten Zeichen, anstatt Vermutungen über irgendwelche zu Grunde liegenden Unichars anzunehmen?
    Wenn aber sowohl das Event selbst als auch das KeyEquivalent dir erzählen 'Hey, das ist 63275!' - wie kommst du dann darauf, der Wert könnte falsch sein?
    Wie kommst du überhaupt darauf, dass das Symbol, welches Xcode dir anzeigt, auch nur $irgendetwas mit dem Resultstring zu tun hat?

    Also entweder:
    [[theEvent charactersIgnoringModifiers] characterAtIndex:0] == 63275

    Oder am besten gleich:
    [[theEvent charactersIgnoringModifiers] characterAtIndex:0] == NSEndFunctionKey

    Wo liegt das Problem? ?(
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P
  • gritsch schrieb:

    dezimal 8600 bzw hexadezimal 0x2198 ist doch genau das was du willst oder nicht?

    Naja... Das KeyEquivalent ist die Ende-Taste. Wenn man die drückt, wird besagtes Symbol in Xcode dargestellt.
    Ich glaube nach wie vor, dass das Symbol mit dem KeyEvent/Return String in etwa so viel zu tun hat wie ein Findling mit einer Salami.
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P
  • Lucas de Vil schrieb:

    gritsch schrieb:

    dezimal 8600 bzw hexadezimal 0x2198 ist doch genau das was du willst oder nicht?

    Naja... Das KeyEquivalent ist die Ende-Taste. Wenn man die drückt, wird besagtes Symbol in Xcode dargestellt.
    Ich glaube nach wie vor, dass das Symbol mit dem KeyEvent/Return String in etwa so viel zu tun hat wie ein Findling mit einer Salami.


    achso, jetzt versteh ich um was es geht ;)
  • WTF hast du eigentlich vor?
    [theEvent charactersIgnoringModifiers] liefert dir doch angeblich einen String.
    Du weißt angeblich, um welches Zeichen es sich handelt.

    Warum vergleichst du nicht also einfach den String mit dem erwarteten Zeichen, anstatt Vermutungen über irgendwelche zu Grunde liegenden Unichars anzunehmen?
    Wenn aber sowohl das Event selbst als auch das KeyEquivalent dir erzählen 'Hey, das ist 63275!' - wie kommst du dann darauf, der Wert könnte falsch sein?
    Wie kommst du überhaupt darauf, dass das Symbol, welches Xcode dir anzeigt, auch nur $irgendetwas mit dem Resultstring zu tun hat?

    Also entweder:
    [[theEvent charactersIgnoringModifiers] characterAtIndex:0] == 63275

    Oder am besten gleich:
    [[theEvent charactersIgnoringModifiers] characterAtIndex:0] == NSEndFunctionKey

    Wo liegt das Problem?


    Es geht um die Darstellung von Symbolen. Wenn ich mit der Annahme falsch lag das der unichar des Key Equivalenten und des Key Down Events [charactersIgnoringModifiers] mit dem System Font Lucida Grand übereinstimmen müsste, dann kann man das ja einfach sagen oder nicht? Ich kann dieses permanente rumgezicke in diesem Forum nur schwer nachvollziehen. Gut...

    Also gibt es wohl dann keinen direkteren Weg das Symbol darzustellen, als die (Funktion Key Unicode) Konstante NSEndFunctionKey zu vergleichen und die darauf folgende Zuweisung das dies dem Unicode Symbol 0x2198 entspricht?

    Hierbei ist für mich verwirrend das in beiden Fällen von Unicode geredet wird aber anscheinend nur eines davon das wirkliche Symbol darstellt. Oder ist auch die Annahme falsch?
    Gruss zuko
  • zuko schrieb:

    Es geht um die Darstellung von Symbolen. Wenn ich mit der Annahme falsch lag das der unichar des Key Equivalenten und des Key Down Events [charactersIgnoringModifiers] mit dem System Font Lucida Grand übereinstimmen müsste, dann kann man das ja einfach sagen oder nicht?

    Klar, nachdem man dann nach ungefähr zwei Stunden herausgefunden hast, dass du angenommen hast, der Unichar des Key Equivalents und des Key Down Events seien identisch.
    Halt, moment, das sind sie ja: 63275

    Also, anders: nachdem man nach ungefähr zwei Stunden herausgefunden hast, dass du angenommen hast, der Unichar des in Xcode dargestellten Symbols sei identisch mit dem Unichar des Key Equivalents und Key Down Events.

    zuko schrieb:

    Ich kann dieses permanente rumgezicke in diesem Forum nur schwer nachvollziehen. Gut...

    Stell deine Frage doch einfach so, dass man sie dir ohne ewiges Rätselraten beantworten kann. Dann wird auch nicht herumgezickt.

    zuko schrieb:

    Also gibt es wohl dann keinen direkteren Weg das Symbol darzustellen, als die (Funktion Key Unicode) Konstante NSEndFunctionKey zu vergleichen und die darauf folgende Zuweisung das dies dem Unicode Symbol 0x2198 entspricht?

    Was? Key Equivalent/Key Down Event = Findling, darzustellendes Symbol = Salami.
    Nein, es gibt keine Möglichkeit mit einem Findling eine Salami mit all ihren Eigenschaften darzustellen.

    Wieder: WTF hast du vor?
    In einem Alertview darstellen, dass jemand die 'Ende'-Taste gedrückt hat?

    zuko schrieb:

    Hierbei ist für mich verwirrend das in beiden Fällen von Unicode geredet wird aber anscheinend nur eines davon das wirkliche Symbol darstellt. Oder ist auch die Annahme falsch?

    NSEndFunctionKey ist (vermutlich) Teil eines Enumerators mit dem Wert 63275. Nix mit Unicode, Character oder sonstigem Käse, einfach nur ein Integer und der hat absolut ganz und gar überhaupt nix mit irgend einem Unicode Character aus irgendeinem Zeichensatz irgendwie gemeinsam.

    Du willst also an Hand des KeyEvents das Symbol der Taste ausgeben?

    C-Quellcode

    1. if([[theEvent charactersIgnoringModifiers] characterAtIndex:0] == NSEndFunctionKey)
    2. {
    3. NSLog(@"↘");
    4. }


    Die von dir interpretierten Zusammenhänge zu der Taste und dem aufgedruckten Symbol existieren nicht.
    Häng doch mal eine Windows-Tastatur ran - du bekommst immer noch 63275, selbst wenn nicht '↘' sondern 'Ende' auf der Taste steht.
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P
  • Lucas de Vil schrieb:

    NSEndFunctionKey ist (vermutlich) Teil eines Enumerators mit dem Wert 63275. Nix mit Unicode, Character oder sonstigem Käse, einfach nur ein Integer und der hat absolut ganz und gar überhaupt nix mit irgend einem Unicode Character aus irgendeinem Zeichensatz irgendwie gemeinsam.

    NSEndFunctionKey hat schon was mit Unicode zu tun, trotzdem hast Du Recht. Der Code befindet sich in einer Unicode Private Use Area - sprich: Validen Unicode-Codes, denen explizit keine Glyphen zugewiesen sind, sondern von Herstellern für ihre Zwecke benutzt werden dürfen. Apple nimmt sie, um derartige Tasten zu repräsentieren. So kann man sie auch in Unicode-Strings packen. Dass einige Font-Hersteller da Glyphen hinlegen, die den Zeichen auf der Apple-Tastatur entsprechen, ist, genau wie Du sagst, irgendwas zwischen netter Geste und reinem Zufall.

    Der Unicode-Code für den South East Arrow ist, wie gritsch sagt, 0x2198.
    Multigrad - 360°-Produktfotografie für den Mac
  • Lucas de Vil schrieb:

    zuko schrieb:

    Es geht um die Darstellung von Symbolen. Wenn ich mit der Annahme falsch lag das der unichar des Key Equivalenten und des Key Down Events [charactersIgnoringModifiers] mit dem System Font Lucida Grand übereinstimmen müsste, dann kann man das ja einfach sagen oder nicht?

    Klar, nachdem man dann nach ungefähr zwei Stunden herausgefunden hast, dass du angenommen hast, der Unichar des Key Equivalents und des Key Down Events seien identisch.
    Halt, moment, das sind sie ja: 63275

    Also, anders: nachdem man nach ungefähr zwei Stunden herausgefunden hast, dass du angenommen hast, der Unichar des in Xcode dargestellten Symbols sei identisch mit dem Unichar des Key Equivalents und Key Down Events.

    zuko schrieb:

    Ich kann dieses permanente rumgezicke in diesem Forum nur schwer nachvollziehen. Gut...

    Stell deine Frage doch einfach so, dass man sie dir ohne ewiges Rätselraten beantworten kann. Dann wird auch nicht herumgezickt.

    zuko schrieb:

    Also gibt es wohl dann keinen direkteren Weg das Symbol darzustellen, als die (Funktion Key Unicode) Konstante NSEndFunctionKey zu vergleichen und die darauf folgende Zuweisung das dies dem Unicode Symbol 0x2198 entspricht?

    Was? Key Equivalent/Key Down Event = Findling, darzustellendes Symbol = Salami.
    Nein, es gibt keine Möglichkeit mit einem Findling eine Salami mit all ihren Eigenschaften darzustellen.

    Wieder: WTF hast du vor?
    In einem Alertview darstellen, dass jemand die 'Ende'-Taste gedrückt hat?

    zuko schrieb:

    Hierbei ist für mich verwirrend das in beiden Fällen von Unicode geredet wird aber anscheinend nur eines davon das wirkliche Symbol darstellt. Oder ist auch die Annahme falsch?

    NSEndFunctionKey ist (vermutlich) Teil eines Enumerators mit dem Wert 63275. Nix mit Unicode, Character oder sonstigem Käse, einfach nur ein Integer und der hat absolut ganz und gar überhaupt nix mit irgend einem Unicode Character aus irgendeinem Zeichensatz irgendwie gemeinsam.

    Du willst also an Hand des KeyEvents das Symbol der Taste ausgeben?

    C-Quellcode

    1. if([[theEvent charactersIgnoringModifiers] characterAtIndex:0] == NSEndFunctionKey)
    2. {
    3. NSLog(@"↘");
    4. }


    Die von dir interpretierten Zusammenhänge zu der Taste und dem aufgedruckten Symbol existieren nicht.
    Häng doch mal eine Windows-Tastatur ran - du bekommst immer noch 63275, selbst wenn nicht '↘' sondern 'Ende' auf der Taste steht.


    Und nur mal zum generellen Verständnis.... wenn jemand nicht vor einem Rätsel stehen würde gäbe es auch kein Grund eine Frage zu stellen.

    Jetzt wo ich mich in das Thema eingelesen habe kann ich feststellen das die Frage im Eingangsbeitrag klar und unmissverständlich formuliert wurde.
    Und wie der Threadtitel schon sagt geht es um die Darstellung von Symbolen.

    Wenn du 2 Stunden brauchst um die Frage zu verstehen, liegt das wahrscheinlich an dem Umstand das du nicht wusstest das die Abfrage eines MenuItem keyEquivalenten, der einer Funktionstaste entspricht, den selben unichar wert ausgibt wie wenn die entsprechende Taste auf dem Keyboard betätigt wurde.
    Das ist aber keine Entschuldigung für dein rumgezicke.

    Ich bin generell für jede Hilfe dankbar aber wenn ich mir anschaue wie im Grossen und Ganzen auf Stacksoverflow geantwortet wird, dann sieht man das es auch anders geht.

    In Zukunft brauchst du dich mit meinen Fragestellungen nicht zu belasten mach irgendetwas was dir Freude bringt.
    Gruss zuko
  • Nur mal zum generellen Verständnis: wenn jemand eine Frage hat, soll er nicht Andere für sich herumrätseln lassen, sondern Fakten auf den Tisch legen.

    Gut, es liegt also an mir, DroneDeveloper und an gritsch, dass wir deine Frage nicht verstanden haben.
    Also haben drei nicht Involvierte die Frage des Involvierten nicht verstanden. Ich kann das auf mich beziehen - tue ich aber nicht.

    Die Frage im Eingangstitel ist klar und unmissverständlich als 'ich weiß selbst nicht, was ich eigentlich will' formuliert.
    Jetzt, nach dem dir Tipps und Hinweise gegeben wurden welche du mit weiteren Informationsbrocken bedacht hast, ist klar und unmissverständlich erkennbar, dass die korrekt formulierte, kurze und knackige Antwort 'gar nicht' lautet.

    Und das hier:
    Wenn du 2 Stunden brauchst um die Frage zu verstehen, liegt das wahrscheinlich an dem Umstand das du nicht wusstest das die Abfrage eines MenuItem keyEquivalenten, der einer Funktionstaste entspricht, den selben unichar wert ausgibt wie wenn die entsprechende Taste auf dem Keyboard betätigt wurde.

    ist ja wohl totaler Bockmist.
    Mir ist klar, dass keyEquivalent und Key Event Code identisch sind. Das hat nichts damit zu tun, dass du den Aufdruck der Taste des jeweiligen Key Events haben willst und dazu eine Verbindung suchst.

    Tausch mal bei deiner Tastatur 'A' und 'B' und schreib' nen Text. Deinem Editor ist es völlig egal, wie die Tasten auf deiner Tastatur aussehen.
    Nichts Anderes hast du hier vor. Und da ich so naiv war davon auszugehen, dass so ein Blödsinn nicht dein Wunsch sein kann, dauerte die Interpretation halt etwas länger.

    Und zu Stack Overflow: ja, StackOverflow beweist, dass es auch anders geht.
    Da stellen die Leute vernünftige Fragen mit Sinn, Verstand, Hintergrund und nach eigener Recherche sowie mehreren Versuchen, welche sie auch mitteilen.

    Deine Frage wäre auf StackOverflow nie aufgetaucht, weil der Fragesteller beim Versuch sie verständlich zu formulieren selbst auf die Lösung gekommen wäre oder der Hagel an Negativbewertungen die Frage sofort wieder ins Nirvana befördert hätte.

    Du stehst auf Vergleiche von Findlingen und Salamis, oder?

    In Zukunft brauchst du dich mit meinen Fragestellungen nicht zu belasten mach irgendetwas was dir Freude bringt.

    Man muss ja erst einmal feststellen, wem es lohnt zu helfen und wem nicht.
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P
  • Bei dir lohnt sich das wohl erst zu antworten wenn du den Hans Dampf spielen kannst.

    Für dich noch einmal....

    Threadtitel heisst ---> lesen und Darstellen von Symbolen.
    Was ich möchte wird ganz konkret beschrieben. Siehe Code.
    Und ich frage... Wie muss muss man formatieren, damit im Log das Symbol richtig dargestellt wird?
    Sprich was muss ich machen damit ich im Log das Symbol sehe.

    Was genau ist daran nicht zu verstehen? :D

    Zeig mir doch mal auf Anhieb einen Link der beschreibt wie Tastatur Symbole beim drücken der Taste korrekt dargestellt werden.... im Textfeld oder im Log.
    Ich hab keine gefunden. Bevor ich hier im Forum eine Frage stelle such ich lieber denn das ist für mich die schnellere Lösung als mich mit irgendwelchen Frustbolzen wie dir auseinander zu setzen. Du kannst davon ausgehen das ich mindestens stunden vorher gesucht habe bevor ich hier eine Frage stelle.


    Und zu Stack Overflow: ja, StackOverflow beweist, dass es auch anders geht.
    Da stellen die Leute vernünftige Fragen mit Sinn, Verstand, Hintergrund und nach eigener Recherche sowie mehreren Versuchen, welche sie auch mitteilen.

    Deine Frage wäre auf StackOverflow nie aufgetaucht, weil der Fragesteller beim Versuch sie verständlich zu formulieren selbst auf die Lösung gekommen wäre oder der Hagel an Negativbewertungen die Frage sofort wieder ins Nirvana befördert hätte.


    Das ist totaler Quatsch. Auf StackOverflow werden die simpelsten Fragen gestellt und meistens freundlich gleich mit Code beantwortet.
    Ins Nirvana würdest du und Konsorten verschwinden

    (...)Du stehst auf Vergleiche von Findlingen und Salamis, oder?(...)


    Ich fand es dämlich und sachlich unpassend wie der ganze Zirkus den du veranstaltest. mattik hat dir ja schon erklärt das beides Unicodes sind.

    Man muss ja erst einmal feststellen, wem es lohnt zu helfen und wem nicht.


    Logik und Konsequenz scheinen nicht deine Stärken zu sein.
    Du stellst ja selber fest "ich würde mir bei der Fragestellung keine Mühe geben". In deiner Welt lohnt es sich dann doch nicht so jemandem zu antworten....es sei denn du darfst den Hansdampf spielen.

    Aber immerhin in deine erste Antwort "Die Xcode Konsole konnte noch nie und kann immer noch kein UTF." im Nachhinein betrachtet recht amüsant. Denn das war nicht das Problem was dann auch widerlegt das du den Sachverhalt anfangs richtig verstanden hattest. Wo wir dann wieder beim Thema Logik wären.

    Wenn du denn mal die Frage der inneren Haltung für dich positiv beantwortest, schaffst du es vielleicht mit den Grossen zu ringen.
    Und jetzt zieh Leine.
    Gruss zuko
  • Komisch, ich habe von Lucas schon brauchbare Antworten bekommen.
    Soll ich ihn jetzt Hans Dampf nennen, oder habe ich mich einfach anders verhalten?
    Mit deinem Beitrag jetzt, wirst du sicherlich nicht mehr viel Hilfe erhalten, denn gegen ein Boardmitglied zu schießen ist nicht die feine Art :)
  • matz schrieb:

    Komisch, ich habe von Lucas schon brauchbare Antworten bekommen.
    Soll ich ihn jetzt Hans Dampf nennen, oder habe ich mich einfach anders verhalten?
    Mit deinem Beitrag jetzt, wirst du sicherlich nicht mehr viel Hilfe erhalten, denn gegen ein Boardmitglied zu schießen ist nicht die feine Art :)


    Wenn du mit dem rumgezicke klarkommst bitte schön, mich nervst weil es so tierisch unnötig ist. Und dann diese ständigen Unterstellungen man würde sich keine Mühe geben usw. Also ich weiß nicht was für dich die feine Art ist aber offensichtlich haben wir da unterschiedliche Auffassungen.

    Ich denke ich hab mich korrekt verhalten, irgendwann ist aber Schluss. Ich kann auch anders. Wer mir helfen möchte dem bin ich dankbar. Wer meint mich dann dafür anrotzen zu dürfen, hat sich gewaltig geirrt. So eine Hilfe möchte ich nicht.
    Gruss zuko