| |
|
|
| explode(,irgendWas) muss ein Array mit 0 (null) Einträgen zurückliefern statt mit einem Eintrag... KompilierenMarkierenSeparierengibt 1 aus statt 0. Hingegen: KompilierenMarkierenSeparierengibt korrekt 1 aus.
Problem ist besonders dann auffällig, wenn der erste Parameter von explode eine Stringvariable ist. Dann muss man über case (sizeOf(myArr$[])=1) and (myArr$[0]=) nachträglich korrigieren - was nicht Sinn der Übung ist. Kurzsyntax für o.g. Beispiel: KompilierenMarkierenSeparieren |
|
|
| |
|
|
|
RGH | Hier gibt es die ausführliche Antwort: [...]
In aller Kürze: Kein Fehler sondern logisch!
Bitte in Zukunft Doppelposts in Community und XProfan-Forum vermeiden, da ich nicht alles doppelt erklären will. (Es reicht schon, wenn das bei meiner Tochter häufig vonnöten ist ... )
Gruß Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 10.07.2008 ▲ |
|
|
|
|
| RGH
Hier gibt es die ausführliche Antwort: [...] In aller Kürze: Kein Fehler sondern logisch!
Hm, ich verstehe Deine Logik, glaube aber hier bleibt der Zug auf halbem Wege stehen denn das Ziel ist ein Array und kein String.
Du solltest für den Fall, dass der String Parameter 1 leer ist, eine Ausnahme deklarieren und ein Array zurückliefern OHNE Einträge.
Ich möchte nicht auf andere Sprachen oder Umsetzungen pochen die es korrekt abarbeiten - aber wenn das Zerteilen von Nichts EINEN Eintrag erzeugt hat man nur Scherereien...
Die Aufgabe von Explode ist das Zerteilen eines Stringinhaltes in Array-Entries, kein Stringinhalt keine Entries.
Wenn kein String aber EIN Entry (wie es jetzt ist) - dann muss man hinterher erst wieder Prüfungen anstellen statt einfach sizeOf verwenden zu können. Das wäre nicht im explode-Sinne.
Der logische Fehler ist imho: explode zerteilt einen Stringinhalt, nicht einen String. Daher ist das Ergebnis auch möglicherweise NULL statt , nämlich wenn kein Stringinhalt vorliegt denn das Ziel ist kein String, sondern ein Array.
Die jetzige Umsetzung ist unvorteilhaft und macht nicht wirklich einen Sinn.
RGH
Bitte in Zukunft Doppelposts in Community und XProfan-Forum vermeiden, da ich nicht alles doppelt erklären will.
Auf keinen Fall sollst Du Mehrarbeit haben (lieber explode reparieren ;D ) - selbstverständlich ist es für mich völlig ausreichend das im Phorum zu klären und mir hier eine Art Backup zu hosten in dem ich Dich einfach aus dem Forum herauszitiere. Du kannst also völlig wertungsfrei meine hier anliegenden Beiträge als Backup missachten. |
|
|
| |
|
|
|
| RGH
da ich nicht alles doppelt erklären will. (Es reicht schon, wenn das bei meiner Tochter häufig vonnöten ist ... ) Gruß Roland
Vielleicht nicht Töchter, aber irgendwie sind wir hier doch alles Deine Kinder.
So gesehen: |
|
|
| |
|
|
|
RGH | Antwort: [...]
Gruß Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 10.07.2008 ▲ |
|
|
|
|
| > Nochmal ein Leerstring ist EIN String und nicht KEIN > String! Und das übrigens in allen Sprachen!
Hey - das ist doch völlig klar! Aber deshalb bin ich doch nicht gleich blind...
explode zerteilt kein String, sondern STRINGINHALT. Ein String ist ein String OHNE INHALT.
Eine Funktion, welche einen Stringinhalt in ein Array konvertiert, muss ein Array mit exakt NULL Einträgen erzeugen wenn kein INHALT vorhanden ist.
Ich weiß genau was Du meinst - das folgt auch meinen ersten Gedanken zum Thema - es ist aber nicht zu Ende gedacht.
> Aber Du kanst Dir ja gerne eine Funktion IfExplode() schreiben, > die das macht, was Du benötigst:
Die Sache ist die - die jetzige Variante ist eher ein rghExplode denn es ist nicht mein Vorschlag welcher vom normalen Explode abweicht - sondern die bisherige Umsetzung von Dir.
Ich sehe auch keinen Vorteil in der jetzigen rghExplode-Variante - das verwirrt nur und führt zu Fehlern. Ich sehe auch keinen Sinn darin explode umzudefinieren. (obwohl ich schon die Klappe gehalten hatte im Bezug darauf das Du die Parameter vertauscht hast) *g* |
|
|
| |
|
|
|
| Hilfe helft mir Roland zu helfen! |
|
|
| |
|
|
|
RGH | |
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 10.07.2008 ▲ |
|
|
|
|
| RGH
Jupp!
rgh
> (Wer in mehreren Sprachen programmiert, sollte allerdings auf > Dauer keine allzu großen Probleme haben, dass in verschiedenen > Sprachen Funktionen teils unterschiedlich heißen, teils > unterschiedliche Parameterfolgen haben und sich teils nur in > kleinen aber wichtigen Details unterscheiden.)
Selbstverständlich doch.
Ich bemängele deshalb auch das xprofansche Explode und möchte lediglich darauf hinweisen,
dass es keinen Sinn macht einen nicht vorhandenen Stringinhalt in ein Array zu konvertieren welches dann EINEN Eintrag aufweist.
Das hat dann irgendwie auch nichts mehr mit XProfan zu tun. |
|
|
| |
|
|