Sie sind nicht angemeldet.

1

Montag, 27. November 2017, 21:22

Krpano 1.19-pr13 - txtsplit belegt Array falsch

Hallo,

Ich bin auf einen unangenehmen Fehler bei txtsplit gestossen.
Ruft man txtsplit mehrmals hintereinander auf (z.B. in einer for-Schleife) und das Ergebnis des letzten txtsplit-Aufrufs hat weniger Elemente im Ergebnis-Array als der zuvor, hat der Ergebnis-Array trotzdem noch die letzten Elemente des alten Aufrufs.
Beispiel:
txtsplit ('1.2.3', '.', arr);
...
txtsplit('3.4', '.', arr);

arr hat nach dem letzten Aufruf immer noch 3 Elemente [3] [4] [3].

Als Workaround habe ich arr vor jedem Aufruf per Hand zurück gesetzt:

copy(actCount, arr.count);
for(set(i,0), i LT actCount, inc (i),
arr.removearrayitem(0);
);

Gibt es einen eleganteren Weg das Problem zu umschiffen? Der Befehl delete funktioniert bei Arrays nicht.

Gruß,

Sebastian

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Tester 17« (28. November 2017, 09:24)


2

Montag, 27. November 2017, 21:37

ja das stimmt, txtsplit löscht das array nicht, aber
set(arr.count,0); sollte reichen um das array zu löschen, soviel ich weiss.

4

Dienstag, 28. November 2017, 09:23

Vielen Dank für Eure Antworten.

Zitat


set(arr.count,0); sollte reichen um das array zu löschen, soviel ich weiss.
Leider funktioniert
set(arr.count,0);
nicht.

Zitat

Die Hilfe zu delete bringt mich leider nicht weiter ...

Gruß,

Sebastian

5

Dienstag, 28. November 2017, 20:14

Hi,

Danke für den Hinweis!
In der nächsten Version wird dies behoben sein.

Mit delete ist folgendes gemeint - wird die Variable 'arr' vor der Verwendung von 'txtsplit' damit jeweils gelöscht, dann wird das Problem damit umgangen.

z.B.

Quellcode

1
2
3
4
5
6
delete(arr);
txtsplit ('1.2.3', '.', arr);
...
delete(arr);
txtsplit('3.4', '.', arr);
...


Schöne Grüße,
Klaus

6

Mittwoch, 29. November 2017, 11:28


Mit delete ist folgendes gemeint - wird die Variable 'arr' vor der Verwendung von 'txtsplit' damit jeweils gelöscht, dann wird das Problem damit umgangen.

z.B.

Quellcode

1
2
3
4
5
6
delete(arr);
txtsplit ('1.2.3', '.', arr);
...
delete(arr);
txtsplit('3.4', '.', arr);
...


Leider funktioniert delete(arr) nicht. Bei Arrays versagt leider der delete-Befehl. Habe es eben noch einmal probiert. Die Elemente werden einfach nicht gelöscht.

z.B.
txtsplit('3.4', '.', testarr);
delete(testarr);
showlog();
trace(testarr[1].value);

zeigt im LOG als Ergebnis 4. nicht testarr[1].value, wie zu erwarten wäre, wenn die Variable testarr gelöscht wäre.
Bitte nehmt das Problem mit auf.

Gruß,

Sebastian

7

Mittwoch, 29. November 2017, 12:27

Hi,

ja, es gibt leider ein Problem mit delete() in der aktuellen Version, dies hat aber nichts im Arrays selbst zu tun.
Dieses wurde bereits ausgebessert.

Als Workaround sollte:

Quellcode

1
delete(global.arr); 
funktionieren.

Schöne Grüße,
Klaus

Ähnliche Themen