StrReplace() / StringReplace: Doku: Achtung Fallen!

Alles, was nicht in die anderen Foren gehört.

Moderator: jNizM

Stroker-007
Posts: 136
Joined: 28 Jan 2021, 17:09
Location: Germany

StrReplace() / StringReplace: Doku: Achtung Fallen!

Post by Stroker-007 » 05 Jun 2022, 13:46

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.
BoBo
Posts: 6563
Joined: 13 May 2014, 17:15

Re: StrReplace() / StringReplace: Doku: Achtung Fallen!

Post by BoBo » 05 Jun 2022, 14:20

@Stroker-007 - Deine Erläuterungen lassen sich einfacher nachvollziehen, wenn du unterstützende Verlinkungen einfügst, z.B. :arrow: StringReplace vs :arrow: 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 :arrow: 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.

Beide Befehle auf 2 getrennten Seiten erklären, so wie es mit "StringGetPos" und "InStr()" bereits vorbildlich demonstriert wird. Geht doch...
Hierbei unterschlägst du, daß :arrow: InStr() die ersetzende Funktion für die Befehle :arrow: IfInString UND StringGetPos ist, was auch explizit angemerkt wird.
This function is a combination of IfInString and StringGetPos.
Womit die umfangreichere/abweichende Funktionalität eine "neue" Beschreibung notwendig machte. It's just that!


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"
User avatar
Ragnar
Posts: 764
Joined: 30 Sep 2013, 15:25

Re: StrReplace() / StringReplace: Doku: Achtung Fallen!

Post by Ragnar » 05 Jun 2022, 15:24

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
Stroker-007
Posts: 136
Joined: 28 Jan 2021, 17:09
Location: Germany

Re: StrReplace() / StringReplace: Doku: Achtung Fallen!

Post by Stroker-007 » 12 Jun 2022, 14:51

Danke für den Hinweis, habe nun aktualisiert, und siehe da: StringReplace und StrReplace sind inzwischen tatsächlich getrennt.
Sehr erfreulich.
Post Reply

Return to “Allgemeines”