1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. L3viathan

Beiträge von L3viathan

  • RegExpProblem 3 mit Chords

    • L3viathan
    • 16. Januar 2010 um 18:09

    Jetzt wirds kompliziert:
    Ich will einen Text transponieren, heißt, aus folgendem

    Zitat

    Fm7 Em7 Am G
    Hello Innocence! Though it seams like we've been friends for years.


    soll das hier

    Zitat

    Gbm7 Fm7 Bbm Ab
    Hello Innocence! Though it seams like we've been friends for years.

    werden.
    Es folgt die UDF für mein neues Projekt+Beispiel:

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    ;Schreibweise:
    #cs
    Großbuchstabe A-G
    optional "m" für moll
    optional Zahlen
    optinal "/" & A-G
    #ce
    ;~ $_REGEXP_CHORD="([A-G](#|b){0,1}m{0,1}\d*(/[A-G]){0,1})"
    $_REGEXP_CHORD="\b(?:[A-G](?:#|b)?m?\d*[^\w ]?\b)\b"
    $_TONE_C=0
    $_TONE_Db=1
    $_TONE_D=2
    $_TONE_Eb=3
    $_TONE_E=4
    $_TONE_F=5
    $_TONE_Gb=6
    $_TONE_G=7
    $_TONE_Ab=8
    $_TONE_A=9
    $_TONE_Bb=10
    $_TONE_B=11
    Func _isChord($sChord)
    Return StringRegExp($sChord,$_REGEXP_CHORD,0)
    EndFunc
    Func _ChordTranspose($sChord,$iTones)
    ;$iTones= +- 11
    $firstTone=_ChordGetBasicTone($sChord,0)
    $append=_ChordGetAppendix($sChord)
    $secondTone=Mod($firstTone+$iTones+12,12)
    Return _NumberToLetter($secondTone) & $append
    EndFunc
    Func _ChordGetBasicTone($sChord, $iFlag=0);iFlag: 0=zahl, 1=Buchstabe
    If not _isChord($sChord) Then
    SetError(1);No Chord
    Return
    EndIf
    $matches=StringRegExp($sChord,"^[A-Z](#|b){0,1}",2)
    $sLetter=$matches[0]
    If $iFlag=1 Then Return $sLetter
    Return _LetterToNumber($sLetter)
    EndFunc
    Func _LetterToNumber($sLetter)
    If Not StringRegExp($sLetter,"^[A-Z](#|b){0,1}$",0) Then
    SetError(1);No Letter
    Return
    EndIf
    Switch $sLetter
    Case "C"
    Return 0
    Case "Db","C#"
    Return 1
    Case "D"
    Return 2
    Case "Eb","D#"
    Return 3
    Case "E"
    Return 4
    Case "F"
    Return 5
    Case "Gb","F#"
    Return 6
    Case "G"
    Return 7
    Case "Ab","G#"
    Return 8
    Case "A"
    Return 9
    Case "Bb","A#"
    Return 10
    Case "B"
    Return 11
    EndSwitch
    EndFunc
    Func _NumberToLetter($iNumber)
    If Not isNumber($iNumber) Then
    SetError(1);No Number
    Return
    EndIf
    Switch $iNumber
    Case 0
    Return "C"
    Case 1
    Return "Db"
    Case 2
    Return "D"
    Case 3
    Return "Eb"
    Case 4
    Return "E"
    Case 5
    Return "F"
    Case 6
    Return "Gb"
    Case 7
    Return "G"
    Case 8
    Return "Ab"
    Case 9
    Return "A"
    Case 10
    Return "Bb"
    Case 11
    Return "B"
    EndSwitch
    EndFunc
    Func _ChordGetAppendix($sChord)
    $matches=StringRegExp($sChord,"m{0,1}\d*(/[A-G]){0,1}$",2)
    Return $matches[0]
    EndFunc
    Func _TextTranspose($sText,$iTones)
    $aTmp = StringRegExp($sText,$_REGEXP_CHORD,3)
    For $i=0 To UBound($aTmp)-1
    $tmp=_ChordTranspose($aTmp[$i],1)
    $sText=StringRegExpReplace($sText,$aTmp[$i],$tmp)
    MsgBox(0,"",$sText)
    Next
    Return StringReplace($sText,"q@qq","")
    EndFunc
    Beispiel:
    MsgBox(64,"Funktioniert:Akkordtransponieren",_TransposeChord("Ebm7",-3))
    MsgBox(0,"1"," Fm7 Em7 Am G " & @CRLF & "Hello Innocence! Though it seams like we've been friends for years.")
    MsgBox(0,"2",_TextTranspose(" Fm7 Em7 Am G " & @CRLF & "Hello Innocence! Though it seams like we've been friends for years.",1))

    [/autoit]


    Dummerweise zeigt er so nach dem Transponieren folgendes an:

    Code
    Abbm7      Fm7         Bbm         Ab        
    Hello Innocence! Though it seams like we've been friends for years.

    , da er erst das Fm vorne zum Gbm macht, und am Ende aus dem G ein Ab.
    Wenn ich statt diesem Pattern das hier nehme:

    Code
    "\b(?:[A-G](?:#|b)?m?\d*[^\w ]?\b) "


    zeigt er das:

    Zitat

    Gb F Bb Ab
    Hello Innocence! Though it seams like we've been friends for years.

    , das heißt er lässt hier die zusätzlichen Zeichen wie m oder 7 weg.
    Was kann ich machen, damit er es korrekt transponiert? Ich sehe keinen Ausweg... ;(

  • Another RegExp-Problem mit der Chords-UDF

    • L3viathan
    • 16. Januar 2010 um 15:55

    Jetzt nur noch: Wie mache ich da ein Replace? Ich kenne StringRegExpReplace, aber ich möchte die Akkorde transponieren. Dazu habe ich eine funktionierende Funktion namens _ChordTranspose($sChord,$iHalfTones)
    Nur wie binde ich das jetzt ein? (Ich kann nicht einfach StringReplace nutzen, da dann ja Akkorde doppelt transponiert werden könnten...)

  • Another RegExp-Problem mit der Chords-UDF

    • L3viathan
    • 16. Januar 2010 um 15:52

    WOW, danke :)

  • Another RegExp-Problem mit der Chords-UDF

    • L3viathan
    • 16. Januar 2010 um 15:21

    Also, nun geht es darum, Akkorde im Text zu finden. Heißt:
    Text:

    Code
    Es war Bb7 , sollte aber C sein. Ohne zweifel G#m und Fm .


    Ich will jetzt im Array haben: Bb7, C, G#m, Fm.
    Ich finde aber bei meinem momentanen Pattern

    Code
    ([A-G](#|b){0,1}m{0,1}\d*(/[A-G]){0,1})

    auch noch E (wegen Es war...), und seltsamerweise auch b und #.
    Das erste Problem (mit dem E) liegt daran, dass er E als Akkord erkennt und ignoriert, dass danach noch ein Buchstabe kommt... Müsste man dann vielleicht ans Pattern anhängen: "[\A-Za-z]" ? Bei mir klappt das jedenfalls nicht. Weshalb er die anderen beiden Zeichen erkennt, leuchtet mir nicht ein.

    Könnt ihr mir helfen?

  • RegExp: Akkord (z.B. Em7/G)

    • L3viathan
    • 16. Januar 2010 um 14:12

    Ich arbeite gerade an einer Chords-UDF, für Akkordsymbole und so...
    Ich suche nach einem RegEx für Akkorde nach folgendem Schema:
    Großbuchstabe von A bis G, optional ein "#" oder ein "b", optional "m" für Moll, optional Zahlen,optional einen Slash ("/") und ein Großbuchstabe von A bis G.
    Gültig wäre also zum Beispiel:
    Em
    G7/F
    C
    Bb0
    Ungültig wären:
    H7
    FG/E
    ...

    Leider bin ich nicht so der RegExp-Profi, mein Versuch:

    Code
    "[A-G](#|b){0,1}m{0,1}[1-0]*(/[A-G]){0,1}"


    Das klappt aber nicht (nutze Flag 0).
    Könnt ihr mir helfen?

    edit: Ich habe glaubich den Fehler gefunden ( [0-9] statt [1-0] ). Bin testen, danach schreibe ich, obs klappte :) (Thx Greek )
    Tatsächlich, Super, es funzt:

    Code
    "[A-G](#|b){0,1}m{0,1}\d*(/[A-G]){0,1}"
  • bild aus dem internet in ein gui

    • L3viathan
    • 14. Januar 2010 um 18:29

    INetGet?

  • [beendet] µit Light Januar 2010

    • L3viathan
    • 14. Januar 2010 um 17:43

    Also es ist wirklich als Funktionsplotter gedacht. Hab natürlich nix dagegen bzw. gibt auch Extrapunkte, wenn die Formelgleichung graphisch dargestellt wird :thumbup:

  • Spracheingabe

    • L3viathan
    • 13. Januar 2010 um 21:04
    Zitat

    aufnehmen

    , nicht abspielen.
    Schnitzel: Das nennt man Linux - because rebooting is for adding new hardware.

  • eigener webserver

    • L3viathan
    • 11. Januar 2010 um 15:44

    Ach quatsch, nur weil T-Offline das in ihren AGBs verkündet, heißt das noch lange nicht, dass ein Verstoß eine Straftat ist...

  • [beendet] µit Light Januar 2010

    • L3viathan
    • 9. Januar 2010 um 14:51

    Im Zweifelsfall natürlich die AutoIt-Bezeichnungen. Alles also, was Execute kann. Mehr kann man natürlich immer machen.
    Der Schwerpunkt des Wettbewerbes soll eher die Darstellung der Formel sein. :)

  • [beendet] µit Light Januar 2010

    • L3viathan
    • 9. Januar 2010 um 14:21

    Schonmal von

    [autoit]

    Execute

    [/autoit]

    gehört? ;)

  • µit Light Dezember 2009

    • L3viathan
    • 8. Januar 2010 um 20:20

    Leider hat uns niemand etwas eingeschickt, war wohl doch zuviel los um die Feiertage. :S

    Wenn du Lust hast, diesmal mitzumachen, diesen Monat wird es etwas schwerer.

  • OK drücker

    • L3viathan
    • 6. Januar 2010 um 21:44

    Kopiere dir am besten allen Text, den Au3Info dir gibt und poste ihn + Screenshot.

  • Godmode für Windows 7 x86 ! (gibts nicht ? - Gibts doch!!!)

    • L3viathan
    • 6. Januar 2010 um 19:58

    Das ist hirnlos. Siehe heise.de

  • Webbrowser finish

    • L3viathan
    • 5. Januar 2010 um 20:42

    *plonk*

  • [beendet] µit Light Januar 2010

    • L3viathan
    • 5. Januar 2010 um 18:12

    Auswertung
    Aus Zeitgründen mal eine relativ knappe Auswertung:
    Gewinner des Gesamtpreises ist Ludwig:
    [Blockierte Grafik: http://www.abload.de/img/itludwig5s4x.png]
    Gewinner des Preises für Kompaktheit ist Latemail:
    [Blockierte Grafik: http://www.abload.de/img/itlatemailps4s.png]
    Die Gewinner haben das Recht, diese Bilder in Signaturen, etc. zu nutzen. In jedem anderen Fall der Nutzung ist das eine Urheberrechtsverletzung, blablabla...
    Begründung:
    Ludwigs Programm ist - da es aus einem größeren Projekt entnommen ist - deutlich komplexer und vielseitiger.
    Latemails Programm funktionierte bei uns nur fehlerhaft, aber immerhin, ein Versuch, und immerhin, deutlich weniger Zeilen als Ludwig. Daher ihm der Preis für Kompaktheit.


    Thema: Formeldarstellung
    Nach Eingabe einer Formel soll diese grafisch dargestellt werden

    Weitere Infos: Die Formel wird als String übergeben, in der Form von "x^2+1". Dabei kann davon ausgegangen werden, dass x immer der Parameter ist. Die graphische Ausgabe kann per GDIPlus oder die eingebauten GUICtrlCreateGraphics-Funktionen erfolgen. Zum Anzeigen darf keine externe dll verwendet werden, die nicht bei Windows/AutoIt dabei war.

    Bei Fragen zur Aufgabenstellung diese bitte hier stellen.

    Bitte auch hier oder per Mail/PN schreiben, dass man teilnimmt.

    Einsendungen hier als verschlüsseltes RAR-Archiv posten, Passwort zu mir, dabei Betreff bitte "uitLight Einsendung" (ohne die "s), damit die Mail automatisch auch an MatthiasG. weitergeleitet wird.

    Einsendeschluss: 10. Februar 2010 n.Chr.
    Meine Mailadresse:
    [Blockierte Grafik: http://img9.abload.de/img/captchafs3l.png] 
    Viel Spaß beim Basteln :)

  • Fenster 100% Transparent, Bild aber nicht

    • L3viathan
    • 5. Januar 2010 um 16:38

    Dann probier doch SEuBo's Code mal aus!
    edit: Grade die Erstellungszeiten verglichen :)

  • schueler VZ Client ?!

    • L3viathan
    • 5. Januar 2010 um 14:23

    OT: Sorry, ich guck immer nur so auf die Signatur, und denke, ah, Bild, viele Links, halt einer von denen, und dann denke ich meist BugFix. Sorry, gtaspider. :P

  • Maus mit den Pfeiltasten steuern

    • L3viathan
    • 4. Januar 2010 um 21:48

    Ich sehe den Sinn nicht so richtig. Muss man immer das Rad neu erfinden?
    Es gibt doch die in Windows integrierte Tastaturmaus!

  • schueler VZ Client ?!

    • L3viathan
    • 4. Januar 2010 um 21:07
    Zitat von BugFix

    Java

    -script

    Habe mir mal die komplette AGB durchgelesen, fremde Clienten sind nicht verboten.

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™