Deutsch
Bugs und vermeintliche

X11RC8: Explode mit kleinem Fehler...

 
explode(,irgendWas) muss ein Array mit 0 (null) Einträgen zurückliefern statt mit einem Eintrag...
KompilierenMarkierenSeparieren
DECLARE MYARR$[]
MYARR$[]=EXPLODE(,;)
PRINT SIZEOF(MYARR$[])
gibt 1 aus statt 0. Hingegen:
KompilierenMarkierenSeparieren
DECLARE MYARR$[]
MYARR$[]=EXPLODE( ,;)
PRINT SIZEOF(MYARR$[])
gibt 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
 
10.07.2008  
 




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.
 
10.07.2008  
 



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:
 
10.07.2008  
 




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*
 
10.07.2008  
 



Hilfe helft mir Roland zu helfen!
 
10.07.2008  
 




RGH
Siehe:  [...] 
 
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
Siehe:  [...] 


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.
 
10.07.2008  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

6.258 Betrachtungen

Unbenanntvor 0 min.
Selmo01.08.2023
Sven Bader15.11.2021

Themeninformationen

Dieses Thema hat 2 Teilnehmer:

iF (6x)
RGH (3x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie