Ich habe eine Prozedur geschrieben, die mehrere Strings auf einmal ersetzt. Es wird eine ausgewogene Kombination aus einer For-Schleife und dem PB-Befehl ReplaceString() verwendet.

Angenommen, ihr habt einen String, der sieht so aus:
Code: Alles auswählen
String$="%x von %y Dateien markiert, Größe: %size"
%y: Anzahl Gesamtdateien
%size: Gesamtgröße
Dann musste man bisher immer schreiben:
Code: Alles auswählen
ReplaceString(ReplaceString(ReplaceString($String, "%x", "9"), "%y", "10"), "%size", "22 MB")
OK, hier nun die Prozedur und darunter der kleine, neue Aufruf, der en obigen 3x ReplaceString() ersetzt:
Code: Alles auswählen
Procedure.s ReplaceStrings(String$, StringsToFind$, StringsToReplace$, Separator$="|", Mode=0, StartFrom=1)
Protected n.l
For n=1 To CountString(StringsToFind$, Separator$)+1
String$=ReplaceString(String$, StringField(StringsToFind$, n, Separator$), StringField(StringsToReplace$, n, Separator$), Mode, StartFrom)
Next
ProcedureReturn String$
EndProcedure
Debug ReplaceStrings("Datei %x von %y, Größe: %size", "%x|%y|%size", "9|10|22 MB")
Lustigerweise und einfachheitshalber habe ich die Funktionen und Parameter genauso wie PB genannt, nur halt von allem die Mehrzahl:
ReplaceString() => ReplaceStrings(), usw...
Wer will, kann sich ja auch ein eigenes Trennzeichen einbauen, wenn er nicht auf das | verzichten will.
Edit: Code optimiert, kompatibel mit allen gängigen Versionen von PB.
Edit 2: Code optimiert, kompatibel mit PB 4.0 oder höher. Es werden außerdem die optionalen Parameter Mode und StartFrom von ReplaceString() unterstützt!