Zwischenablage-Zuweisung fehlerhaft?  GELÖST

Anwenderaustausch zur PhraseExpress Makroprogrammierung
Post Reply
Peter Stotz
PhraseExpress Expert
Posts: 921
Joined: 27 Feb 08, 15:07

Zwischenablage-Zuweisung fehlerhaft?

Post by Peter Stotz » 05 Apr 19, 16:20

@Technischer Support, @all
Dieses (hier etwas verkürzte) Makroprogramm hat bisher die Zeichen des Zwischenablage-Inhalts zufällig vermischt:

Code: Select all

{#setclipboard 0123456789}{#settemp -name ##random_string -content }{#loop {#settemp -name ##zfw -content {#calc 1+{#rnd {#length {#insertclipboard}}} -round 0}}{#settemp -name ##random_string -content {#gettemp ##random_string}{#substr {#insertclipboard} -from {#gettemp ##zfw} -count 1}}{#setclipboard {#substr {#insertclipboard} -from 1 -count {#calc {#gettemp ##zfw}-1 -round 0}}{#substr {#insertclipboard} -from {#calc {#gettemp ##zfw}+1 -round 0} -count }} -count {#length {#insertclipboard}}}{#gettemp ##random_string}
Das funktioniert neuerdings nicht mehr. Fehlerquelle ist offenbar diese Zuweisung, bei der zwei Zwischenablage-Teilabschnitte der Zwischenablage zugewiesen werden:
{#setclipboard {#substr {#insertclipboard} -from 1 -count {#calc {#gettemp ##zfw}-1 -round 0}}{#substr {#insertclipboard} -from {#calc {#gettemp ##zfw}+1 -round 0} -count }}

Wenn dasselbe Makroprogramm mit einer Variablen ##string anstatt #setclipboard arbeitet, ist alles ok:

Code: Select all

{#settemp -name ##string -content 0123456789}{#settemp -name ##random_string -content }{#loop {#settemp -name ##zfw -content {#calc 1+{#rnd {#length {#gettemp ##string}}} -round 0}}{#settemp -name ##random_string -content {#gettemp ##random_string}{#substr {#gettemp ##string} -from {#gettemp ##zfw} -count 1}}{#settemp -name ##string -content {#substr {#gettemp ##string} -from 1 -count {#calc {#gettemp ##zfw}-1 -round 0}}{#substr {#gettemp ##string} -from {#calc {#gettemp ##zfw}+1 -round 0} -count }} -count {#length {#gettemp ##string}}}{#gettemp ##random_string}
Der Effekt wird also wohl mit der Zwischenablage (und vielleicht auch mit der Verwendung des -count-Parameters ohne Zahlenwert?) zu tun haben, genaueres konnte ich bisher nicht herausfinden.
Frage: Was läuft bei der Zwischenablage-Version falsch?

Für Hinweise bin ich dankbar!
Peter Stotz
Windows 10 - PhraseExpress v14.0.137

Peter Stotz
PhraseExpress Expert
Posts: 921
Joined: 27 Feb 08, 15:07

Post by Peter Stotz » 06 Apr 19, 12:22

Noch eine Anmerkung dazu:
Im Formular ist bei #substr kein Leerzeichen vorgesehen...
#substr Zeichenanzahl.jpg
Peter
Windows 10 Home - PhraseExpress v14.0.137
You do not have the required permissions to view the files attached to this post.

Technical Support
Posts: 2798
Joined: 10 Feb 06, 22:23

Post by Technical Support » 12 Apr 19, 08:36

Zwischenablage für solche Sachen zu verwenden ist nicht empfehlenswert, weil die Zwischenablage langsam ist und viel Orverhead hat.
In der neuen experimentellen Version 14.0.138, sollte es aber besser funktionieren.

https://www.phraseexpress.com/docs14/09/changelog.php

Peter Stotz
PhraseExpress Expert
Posts: 921
Joined: 27 Feb 08, 15:07

Post by Peter Stotz » 12 Apr 19, 10:01

@Technischer Support
1. Vielen Dank - mit v. 14.0.138 funktioniert das Beispiel!
Ich werde Ihrem Hinweis folgen und für solche Anwendungen temporäre Variablen anstatt der Zwischenablage verwenden.

2. Formularangabe für die Zeichenanzahl beim #substr-Makro
Hier kann bei v.14.0.138 unverändert nur ein Zahlenwert vorgegeben werden - eine Leereingabe oder ein Leerzeichen wird nicht angenommen...

Danke!
Peter Stotz
Windows 10 64 bit - PhraseExpress v14.0.138

Post Reply