Beiträge von Mikka

    Hallo zusammen,

    ich möchte für eine wöchentlich zu verschickende Nachricht das Datum des jeweiligen Wochentags, in meinem Fall Freitag, ermitteln und zurückgeben. Verwendet wird eine Voyager-Version 9.x und das letzte XMP-Plugin 1.3.1, das ich auch für die Kalenderwoche einsetze.

    Überlegt habe ich mir zunächst folgendes:

    1. Aus aktuellem Datumsobjekt Wochentag (z.B. "Thu") auslesen
    2. Dem ausgelesenen Wochentag einen Zahlenwert zuweisen
    3. Falls dieser Wert ungleich dem Wert für Freitag:
      - Ermittlung der Differenz in Tagen
    4. Verwendung der Differenz um neues Datumsobjekt zu berechnen
    5. Ausgabe des neuen Datumsobjekts (dd.mm.Y)

    Etwas aufwändig würde ich sagen.
    Geht es auch einfacher? Evtl. per Kalenderwoche?

    Danke für eure Vorschläge!

    Mikka

    Als GnuPGP External Key Manager habe ich im Voyager Kleopatra eingestellt. Um zu testen, inwieweit das mit den OpenPGP-Zertifikaten funktioniert, schickte ich Adele ein paar Nachrichten. Das scheint erst mal zu funktionieren, steht noch S/MIME aus.

    Nun frage ich mich, ob das so auch ohne lokale Gpg4win-Installation funktioniert, sprich welche Dateien/Ordner ich samt Voyager-Installation auf den Stick umziehen muss. (Kommt Voyager inzwischen mit relativen Pfaden zurecht...?)
    Oder... muss ich dafür mit GnuPT herumfummeln?

    Selbst die aktuelle TheBat 5.0.12 läuft nicht mit GPG4Win 2.10 (das ist gpg 2.0.17).

    Hallo Gwen,

    habe mir mal testweise TheBat Voyager 5.0.22.8 installiert um zu schauen, ob's Ritlabs endlich gebacken gekriegt hat...
    Gpg4Win 2.1.0, was ich testweise mit installiert habe, funktioniert händisch auch soweit.

    Angeblich (behauptet jedenfalls Maxim) soll es seit der Alpha 5.0.22.1 "funktionieren". Was immer Maxim damit meint, ich habe so meine Zweifel...
    Ich wollte eigentlich lediglich die interne Gpg-Implementierung (wohl noch von anno dazumal) zugunsten meiner Gpg4win-Installation ändern.
    Gibt's dazu irgendwelche Dinge, die man beachten muss, deiner Meinung nach?

    Gruß,
    Mikka

    'n Abend Bernd!

    Zitat

    Da du beliebig viele - suchen/ersetzen willst, müsstest du das über eine rekursive Schnellvorlage lösen

    Brrr, als ob der Regex-Makro-Einsatz in TheBat! nicht schon frickelig genug ist ...


    Zitat

    Ich hatte gedacht, sowas kann das XMP


    O-Ton Gaijin:

    Zitat

    Die RegEx-Makros in XMP sind als einfachere Alternative zu den langen
    und umständlichen TB!-internen RegExp-Makros gedacht. Für aufwändigere
    Ausdrücke müssen die TB!-Makros verwendet werden.


    Zwar habe ich im Forum einen Wunsch hinterlassen, nur gehe ich selber nicht davon aus, dass Gaijin sich darum kümmern wird; er schrieb:
    "[…] mit RegEx-Makros kenne ich mich auch nicht so aus" und verwies auf "einige Gurus" im "TB!-Forum".

    Hm, ich schätze, er meinte beispielsweise dich, Bernd. ;)


    Nachtrag:
    Für jede reguläre Ersetzungsoperation eine separate Vorlage zu erstellen, die dann aus meiner bestehenden rekursiv abgearbeitet wird, scheint mir enorm aufwändig, alles andere als elegant und performant wohl auch nicht.
    Kennt jemand ein separates TB!-Plugin für reguläre Aufgaben wie diese?

    Da Ritlabs' hauseigene Regex-Makros mir ein Gräuel sind, würde ich eine Erweiterung des Makros %XMP_StrRERepl wünschen.
    Bisher werden nur rudimentäre reguläre Ausdrücke unterstützt, ich würde mir wünschen, auch z.B. Assertions in Suchausdrücken verwenden zu können.

    Hab mich vor mehreren Jahren mal damit befasst, als Spielerei eben. Wenn man das Ganze aufs Nötige reduziert, braucht es dazu nicht einmal Plugins in TB! (wobei ich Gaijins XMP seit Anbeginn drin habe, da das auch für andere Zwecke nützlich ist), nur AMIP, das mittlerweile auch viele Programme unterstützt.

    Einziger Nachteil von AMIP ist die noch immer fehlende Unicode-Unterstützung. Wer z.B. russische Musik hört, wird das vermissen. Ich habe AMIP als Winamp5-Plugin installiert, schreibe die Titelinfos (Play: %?1<%1: %2|%s>) nach %temp%\now-playing.txt und hole sie mittels %Put in eine Mail-Signatur.
    Im Prinzip ist es das schon. Alles weitere ist mehr oder weniger Kosmetik: Prüfen ob die now-playing.txt größer 0 Byte ist, oder Umformen der einzulesenden Now-Playing-Zeile.

    Zitat

    Ich kann das Problem mit dem Hochkomma und QT in der 4.2.13.4 auch nachvollziehen.

    Seltsam, denn andere Zeichen klappen.

    Das Problem tritt nicht nur bei Hochkommata auf!

    Ich habe einige Tests gemacht, mit einer Vorlage c, (Inhalt: ç), einer anderen -- (Inhalt: ), und einer dritten p (Inhalt: […]).
    Ergebnis wie oben. Sobald die Vorlage aus mehreren Zeilen (bzw. aus Makroaufrufen) besteht, verhält sich TB! so wie erwartet: Ausgabe des gewünschten Resultats.

    Hallo zusammen,

    ich möchte Text variabler Länge beliebigen Inhalts parsen und darin Vorkommen bestimmter Zeichen ersetzen lassen.
    Gaijin meinte, dass ich dabei nicht auf sein XMP-Plugin (%XMP_StrRERepl) zurückgreifen könne, da meine Suchausdrücke zu komplex wären.

    So will ich beispielsweise Bindestriche, sofern sie nicht der Worttrennung dienen, durch Divise (–) ersetzen, als regulären Suchausdruck verwende ich

    Code
    (^\-|(?<=\s)\-)


    Jetzt bin ich zwar in Regulären Ausdrücken oder egrep halbwegs firm, stehe aber mit Ritlabs' Makrosprache auf Kriegsfuß ...
    Wie lässt sich für einen String %_text eine reguläre Ersetzung bei n Treffern in TB! durchführen?

    Code
    %SetPattRegExp='(?m-s)(^\-|(?<=\s)\-)'%-
    %RegExpBlindMatch='%_text%-
    %REM='  ** Und was kommt dann?  ** '%-


    Kann mir irgendwer weiterhelfen?

    Gruß,
    Mikka

    Modedit GwenDragon: abgeteilt von Sonderzeichen in MicroEd Sonderzeichen in MicroEd

    Damals™ als die Fledermausversion 2 noch aktuell war, konnte man per Schnellvorlage wichtige Sonderzeichen in MicroEd einfügen, z.B.
    '
    Folge: MicroEd löschte erst das Hochkomma und fügte an der Cursorposition dann den Apostroph ’ ein. Eben ganz wie man's erwarten würde.

    In TB! 4.2.x hingegen ist alles anders:
    '
    Folge: MicroEd öffnet die Schnellvorlagenauswahl, ich muss manuell die gewünschte Vorlage (namens Apostroph mit Alias ') in der Liste suchen und doppelklicken, daraufhin behält MicroEd im Nachrichtentext das ursprüngliche Hochkomma bei, hängt den Inhalt der Vorlage, das Zeichen ’ an und löscht zusätzlich noch den nachfolgenden Zeilenumbruch, falls nach dem Hochkomma die Zeile endet.

    Was soll das?

    Das lässt sich für jede andere Schnellvorlage reproduzieren, welche nur ein Symbol enthält, das ein bestehendes ersetzen soll.
    Gegenbeispiel, meine Schnellvorlage mfg:

    Code
    Mit freundlichen Grüßen
    
    
    %FolderFromName


    Das klappt ohne Probleme:
    mfg
    Folge: MicroEd löscht mfg und die Ausgabe der Schnellvorlage wird direkt an der Cursorposition eingefügt.

    Kennt jemand dieses Phänomen?

    Das VBScript enthält als Aufruf:

    Code
    fs.opentextfile(source, 1, false, 0)


    Also: Datei source wird read-only geöffnet (und nur falls vorhanden) als ANSI.
    (Auf Unicode, d.h. mehr als 1 Byte pro Zeichen, habe ich bewusst verzichtet, um die Dinge nicht zu verkomplizieren.)

    Dennoch glaube ich, dass es daran liegt, dass die korrekte Ausgabe per cscript von %XMP_RunCmd fehlerhaft konvertiert wird.
    Auch ans Konsolenkommando chcp 1252 hab ich schon gedacht, glaube aber nicht, dass das was bringt ...

    Update:
    Gaijin wies mich darauf hin, dass die DOS-Eingabeaufforderung in Windows bestimmte Zeichen automatisch konvertiert, etwa Anführungszeichen.
    Das ließ sich auch nicht verhindern, indem ich in einem Initialisierungsskript für die cmd.exe das Kommando chcp 1252 eintrug.
    Gaijins Tipp: Das VBScript umschreiben, dass die Ausgabe in eine Datei erfolgt, welche dann z.B. via %Put in TB! eingelesen wird.
    Werde ich austesten.

    Hallo Gwen!

    Zitat

    Ganz einfach. Ich nehme an, das hat was mit dem Zeichensatz des Systems zu tun.

    Ja, eine Vermischung zweier unterschiedlicher Zeichensätze wäre möglich. Nur in welchem Schritt?
    (In einer früheren Diskussion, damals noch über %GMP_RunCmd, war übrigens ein Bug in TB! die Erklärung.)

    In diesem Fall liegt eine Textdatei (Windows-1252) zugrunde, die von dem VBS-Skript geparst und teilweise ausgegeben wird.

    Code
    F:\Test> cscript /nologo .\f.vbs quotes1
    Wer die falschen Fragen stellt, der erhält
    Antworten wie „42“ oder „Gott“.
    
    
    F:\Test>


    Sobald ich das in TB! importiere (neue Nachrichten sind standardmäßig bei mir Windows-1252), findet offenbar eine Character-Konvertierung statt:

    Code
    Wer die falschen Fragen stellt, der erhält
    Antworten wie "42" oder "Gott".

    Die Syntax von %XMP_RunCmd ist ja
    %XMP_RunCmd(Befehl, [NoConvert], [Timeout])

    Sofern der Parameter NoConvert also nicht auf 1 gesetzt wird (was bei mir der Fall ist), "behandelt" %XMP_RunCmd Ausgaben des cscript-Befehls irgendwie ehe diese in die Variable %_q geschrieben werden ...

    Übrigens, eben noch getestet, so etwas hier:

    Code
    cscript /nologo .\f.vbs quotes1 > %temp%\test.txt


    führt zu einer Datei test.txt (ANSI, Windows-1252) mit dem Inhalt:

    Code
    Wer die falschen Fragen stellt, der erh„lt
    Antworten wie "42" oder "Gott".


    Erwartungsgemäß ist diesmal auch das kleine ä verfälscht, nicht allein die Anführungszeichen „“.
    Was meinen Verdacht bestärkt, dass %XMP_RunCmd nicht korrekt arbeitet ...

    Hallo alle zusammen,

    nach längerer Ritlabs-Abstinenz habe ich im Sommer testweise TheBat! 4.2.9 samt XMP 1.2 (die derzeit neueste Version) installiert.
    (Auf Gaijins Website steht zu lesen, XMP funktioniere bis TB! 3.99.29, ich hoffe, das Problem hängt nicht damit zusammen ...)

    Die schlechte Nachricht: Wenig hat sich seit damals geändert, Probleme/Bugs sind weitgehend identisch.
    Und ob die optischen Änderungen ein Update rechtfertigen, na ja.

    Nun zu meinem Problem bzgl. TB! 4.2 & XMP:

    Ich habe in TB! folgende Schnellvorlage eingerichtet:

    Code
    %_q=#%XMP_RunCmd('cscript /nologo .\external.vbs param',0,60)#%-
    %_q%-

    Der Skript-Aufruf cscript /nologo .\external.vbs param funktioniert in der DOS-Eingabeaufforderung (cmd.exe) unter XP auch tadellos und liefert mir einen mehrzeiligen Text variabler Länge, Ausgaben beinhalten Zeichen wie „ “ ’ – — ™ etc. Innerhalb von cmd.exe werden die wie gesagt alle korrekt dargestellt. Sobald ich aber per %XMP_RunCmd eine solche Ausgabe in eine neue Nachricht in TB! hole, werden diese Zeichen ersetzt:

    • „ und “ zu: "
    • ’ zu: '
    • – sowie — zu: -
    • ™ zu: T
    • […] zu: [.]

    usw.

    Jetzt könnte man – zumindest teilweise – gegensteuern und vor der Ausgabe von %_q% so etwas tun (' –› ’):

    Code
    %_q=#%XMP_StrRepl("%_q","'","’",1,1)#%-
    %_q%-

    Aber erstens ist das ziemlich aufwändig und zweitens hieße das, an Symptomen herumzudoktern anstelle die Ursache anzugehen.
    Meine Frage an Gaijin deshalb: Liegt die Ursache dafür im Makro %XMP_RunCmd oder sind Bugs in TB! daran Schuld?

    Gruß,
    Mikka


    P.S.:
    Bei der Ersetzung habe ich auch diesen Ausdruck getestet:

    Code
    %_q=#%XMP_StrRERepl("%_q","(?<=\s)\-","–",1)#%-


    Es funktionierte nicht, wahrscheinlich wegen des positiven Lookbehind (?<=\s).
    Ist eventuell PCRE-Support für ein Update vorgesehen?