Die Doku sagt:
ErsetzteZkette := StrReplace(Heuhaufen, Suchtext [, Ersatztext, AusgabeVarAnzahl, Limit := -1])
So aber wäre es richtig:
ErsetzteZkette := StrReplace(Heuhaufen, "Suchtext" [, "Ersatztext", AusgabeVarAnzahl, Limit := -1])
Die Fallen bestehen darin:
1. Die Gänsefüßchen fehlen in der Syntax. Wobei es u.U. auch einen Grund dafür gibt, der aber i.d.R. dem momentan nicht hilft, der noch kein hochdekorierter Sternegeneral ist und in der Doku - noch - nachsehen muß.
2. Der übliche erste Rettungsanker als typisches Vorgehen bei "funktioniert nicht" ist das Ansehen von Beispielen, jeweils unten auf einer Dokuseite. Führt i.d.R. meistens zum Ziel.
Aber Spezialfall "StrReplace() / StringReplace":
Am Anfang der Seite wird nur "StrReplace()" besprochen, ohne Hinweis darauf, daß etwas weiter unten die alte Syntax vorgestellt wird.
Ich benötige schnell mal die Syntax dazu, aber es läuft nicht.
Ich will schnell mal ein Beispiel sehen, scrolle schnell mal zum Ende der Dokuseite, und sehe dort aber die Beispiele der alten Syntax "StringReplace" - ohne Gänsefüßchen bei: Suchtext [, Ersatztext...
Es vergeht wieder mal einiges an Such- und Testzeit, bis ich irgendwann genervt und bar jeder Hoffnung die ganze Doku-Seite durchblättere/-lese. Dann wird die Lösung UND das Problem klar.
btw.: schnell mal
Bei dieser sprachlich normalerweise nichtssagenden und überflüssigen Füllformel sollen die Wiederholungen und Hervorhebungen verdeutlichen, wie der tatsächliche banale Alltag eines AHK-Lernenden realistischerweise aussieht - ganz im Gegensatz dazu, wie hochdekorierte AHK-Sternegeneräle evtl. denken, wie ein AHK-Unteroffizier vorbildlicherweise vorgehen sollte.
Korrektur Doku-Seite:
Beide Befehle auf 2 getrennten Seiten erklären, so wie es mit "StringGetPos" und "InStr()" bereits vorbildlich demonstriert wird. Geht doch...
Dann kommen solche odyssealen Irrfahrten bei Unteroffizieren nicht mehr so völlig sinnfrei vor.
StrReplace() / StringReplace: Doku: Achtung Fallen!
Moderator: jNizM
-
- Posts: 136
- Joined: 28 Jan 2021, 17:09
- Location: Germany
Re: StrReplace() / StringReplace: Doku: Achtung Fallen!
@Stroker-007 - Deine Erläuterungen lassen sich einfacher nachvollziehen, wenn du unterstützende Verlinkungen einfügst, z.B. StringReplace vs StrReplace(). HTH
Deine generelle Annahme, dass für die Funktion StrReplace() die Parameterangaben mittels Anführungszeichen grundsätzlich als Strings zu kennzeichnen seien, teile ich nicht.
Beispiel:
MsgBox % StrReplace(12345,3,9)
Kein einziger String, womit die von dir angemahnte Vorgabe, dass diese Parameter als Strings zu kennzeichnen wären nicht zwingend ist.
Deine vermeintlich "richtige" Auslegung sieht den (da nicht explicit als String deklarierten) Heuhaufen als Variable vor, doch auch dies ist nicht zwingend, da an deren Stelle auch ein String verwendbar wäre.
Daraus folgt, die Art der Darstellung in der AHK-Hilfe wie Parameter in Funktionen zu setzen sind, zielt nicht auf deren Schreibweise ab, sondern auf deren Position als auch Optionalität.
Weitere Details zu den jeweiligen Parametern werden übrigens direkt im Anschluß zur syntaktischen Darstellung ausgeführt. Die muß man/frau nur lesen wollen.
Ergänzend dazu gilt: in Funktionen ist die Expression-Schreibweise anzuwenden. Damit erübrigt sich dein Einwand.
Befehle in der 'Legacy'-Schreibweise, welche (gefühlt mehrheitlich) als "deprecated"/veraltet gekennzeichnet sind, enthalten ggf noch Hinweise ob 'Expression'-Schreibweise möglich ist, oder ggf "forced"/erzwungen werden kann.
Ich gestehe zu, das z.B. für langjährigste AHK-Nutzer die Verwendung der "neueren" (mit AHK 2.x abermals veralteten) Syntax Widerstände provoziert.
Nevertheless, läßt sich auch hier, wie so oft im Leben, der Fortschritt nicht aufhalten. Frei nach dem Motto: "Wer zuletzt kommt den bestraft das Leben"
Deine generelle Annahme, dass für die Funktion StrReplace() die Parameterangaben mittels Anführungszeichen grundsätzlich als Strings zu kennzeichnen seien, teile ich nicht.
Beispiel:
MsgBox % StrReplace(12345,3,9)
Kein einziger String, womit die von dir angemahnte Vorgabe, dass diese Parameter als Strings zu kennzeichnen wären nicht zwingend ist.
Deine vermeintlich "richtige" Auslegung sieht den (da nicht explicit als String deklarierten) Heuhaufen als Variable vor, doch auch dies ist nicht zwingend, da an deren Stelle auch ein String verwendbar wäre.
Daraus folgt, die Art der Darstellung in der AHK-Hilfe wie Parameter in Funktionen zu setzen sind, zielt nicht auf deren Schreibweise ab, sondern auf deren Position als auch Optionalität.
Weitere Details zu den jeweiligen Parametern werden übrigens direkt im Anschluß zur syntaktischen Darstellung ausgeführt. Die muß man/frau nur lesen wollen.
Ergänzend dazu gilt: in Funktionen ist die Expression-Schreibweise anzuwenden. Damit erübrigt sich dein Einwand.
Befehle in der 'Legacy'-Schreibweise, welche (gefühlt mehrheitlich) als "deprecated"/veraltet gekennzeichnet sind, enthalten ggf noch Hinweise ob 'Expression'-Schreibweise möglich ist, oder ggf "forced"/erzwungen werden kann.
Hierbei unterschlägst du, daß InStr() die ersetzende Funktion für die Befehle IfInString UND StringGetPos ist, was auch explizit angemerkt wird.Beide Befehle auf 2 getrennten Seiten erklären, so wie es mit "StringGetPos" und "InStr()" bereits vorbildlich demonstriert wird. Geht doch...
Womit die umfangreichere/abweichende Funktionalität eine "neue" Beschreibung notwendig machte. It's just that!This function is a combination of IfInString and StringGetPos.
Ich gestehe zu, das z.B. für langjährigste AHK-Nutzer die Verwendung der "neueren" (mit AHK 2.x abermals veralteten) Syntax Widerstände provoziert.
Nevertheless, läßt sich auch hier, wie so oft im Leben, der Fortschritt nicht aufhalten. Frei nach dem Motto: "Wer zuletzt kommt den bestraft das Leben"
Re: StrReplace() / StringReplace: Doku: Achtung Fallen!
Deine deutschsprachige Offline-Hilfe (CHM) ist nicht auf dem aktuellsten Stand. StringReplace und StrReplace wurden schon vor knapp 2 Jahren voneinander getrennt. Um die aktuellste Version der Hilfe zu beziehen, siehe viewtopic.php?f=9&t=43
-
- Posts: 136
- Joined: 28 Jan 2021, 17:09
- Location: Germany
Re: StrReplace() / StringReplace: Doku: Achtung Fallen!
Danke für den Hinweis, habe nun aktualisiert, und siehe da: StringReplace und StrReplace sind inzwischen tatsächlich getrennt.
Sehr erfreulich.
Sehr erfreulich.