| |
|
|
| Ich überleg die ganze Zeit wie ich es am besten erklären kann...
Die Funktion MID$ liefert einen "String" und die Funktion Explode ein "Dynamisches String-Array".
MID$ auf ein Leerstring, also ein MID$ auf "nichts", liefert einen Leerstring zurück, also einen String ohne Zeichen.
Explode auf ein Leerstring, also explode("",""), liefert ein "Dynamisches String-Array" zurück, also "nichts" als Array, also ein Array ohne Indizes/Einträge.
XProfan11 hat leider den Bug, ein dynamisches String-Array zurück zu liefern, welches eben nicht leer ist sondern einen Eintrag enthält.
Auch wenn ein Leerstring ein "String" ist, und damit z.B. bei MID$ deshalb auch der Rückgabewert ein LeerString ist, so ist bei Explode der Rückgabewert ein "Dynamisches String-Array", welches keine Einträge haben darf genau wie ein Leerstring auch keine Zeichen enthalten darf.
Ich kanns auch beweisen! KompilierenMarkierenSeparieren Und weil das Beispiel schön zeigt, dass im Arrayfall 1+1=2 ist, muss im eigenen Programm erst eine Abprüfung her.
Hinzu kommt, dass die, die diese Funktion bereits aus z.B. PHP kennen, diese Kleinigkeiten als störend unnötig empfinden könnten obwohl hier nur kleinste Anpassungen nötig wären die keinerlei Nachteile hervorrufen. |
|
|
| |
|
|
|
Frank Abbing | Du hast recht, mit "","" dürfte kein solches Array erstellt werden! |
|
|
| |
|
|
|
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 | 09.10.2009 ▲ |
|
|
|
|
| Super, kann man einfacher mit umgehen. |
|
|
| |
|
|
|
| Ich bin übrigens immer noch der Meinung, dass Du das Umdrehen der Parameter rückgängig machen könntest. Noch nutzt niemand explode, dass könnte die letzte Chance sein. ^^
Die jetzige Variante verwirrt mich spätestens wenn ich innerhalb 1 Editor mit verschiedenen Sprachen programmiere, also ein Fenster mit HTML/JS aufhabe, eins mit PHP und eins mit XProfan. Bei instr oder ins$ heissts doch auch: gesuchter, durchsuchter und bei bei Explode war nunmal seither auch: gesuchter, durchsuchter. |
|
|
| |
|
|
|
RGH | Tja, das mit den Parametern ist so eine Sache ... überall ist der Delimiter hinten dran und kann ggf,. weggelassen werde. Ich denke, dass das XProfan-Explode eher zu XProfan "kompatibel" sein sollte, als zu anderen Sprachen.
Gruß Roland (beginnt derzeit wieder, am nächsten XProfan zu basteln.) |
|
|
| 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 | 09.10.2009 ▲ |
|
|
|
|
| Ich sehe das etwas anders, denn bei instr oder ins$ heisst es auch (gesuchter, durchsuchter).
Ein Explode(gesuchter, durchsuchter) wäre dann nicht weniger XProfan-kompatibel.
Weglassen des Delimiters ginge auch wenn es der 1. Parameter wäre. (natürlich, sei denn, Du hast für Explode noch weitere optionale Parameter angeplant)
Ich würde eher sagen, dass das Explode eine gute Idee aus anderen Sprachen ist, die XProfan aufgegriffen hat. Jetzt aber die Parameter dafür zu vertauschen müsste einen Grund haben, aus persönlicher Erfahrung ists einzig nervig besonders auch weil imho technisch unnotwendig. ^^
Natürlich kann ich es auch als "persönliche Note" anerkennen, aber ich dachte Du hast das Explode für mich gemacht. ^^ |
|
|
| |
|
|
|
Nico Madysa | Tut mir Leid, iF; doch hier stimme ich definitiv mit Roland überein. Explode gehorcht nicht dem Prinzip gesucht-durchsucht wie InStr oder Translate$, sondern (sogar ziemlich offensichtlich) dem Substringprinzip; wie SubStr, len, etc. Bei Explode("A B C D E F"," ") fasse ich das Leerzeichen nicht als gesuchten String -- Instr(" ","A B C D E F") -- , sondern als Delimiter/Begrenzer auf: del$("A B C D E F",3,1," ")
NB: Gerade ist mir aufgefallen, dass Explode auch in der XProfan-Hilfe im Bereich Teilstrings steht (7.11); und dort passt die Parameterreihenfolge wirklich gut hinein . |
|
|
| |
|
|
|
| Was Du schreibst macht Sinn, z.B. wenn einem das explode neu ist, man nicht bereits hunderte Codes mit "richtigem" Explode vorliegen hat.
Locate Y,X - aus Basic setPixel X,Y - aus Basic var ... - (u.A.) aus Java ins$(d$,s$) ... explode - aus PHP
Weils aus PHP kommt die Parameter vertauschen? |
|
|
| |
|
|
|
Nico Madysa | Gut, also über SetPixel müssen wir uns wirklich nicht streiten; ohne arrogant wirken zu wollen kann ich sagen, dass die Reihenfolge X, Y doch eine seeeehr etablierte Form ist. Was Locate angeht, so ärgert mich diese Verdrehung von Anbeginn; wenn das korrigiert würde, wäre ich schon dankbar. (Kompatibilitätsbedenken halte ich für unangebracht, überleben die meisten Kodes, die Locate benützen, doch selten das Ende der Windowssitzung.)
Und nein, die Parameter werden bei Explode nicht vertauscht, weils aus PHP kommt, sondern weil es im Kontext mit XProfan umgekehrt einfach mehr Sinn ergiebt -- wie du schon sagtest.
Meine Meinung mag etwas radikal sein, aber ich denke nicht, dass wir nur den anderen Programmiersprachen zuliebe noch eine lästige Ausnahme ins Schema zwängen sollten.
PS: Eigentlich eine gute Idee -- warum ist der Delimiter nicht optional? Fehlt er, dann ist jeder Buchstabe ein Teilstring. |
|
|
| |
|
|
|
RGH | Nopch mal kurz zu explode() in XProfan 12:
1. Ist der zweite Parameter (Delimiter) ein Leerstring, wird jedes Zeichen zu einem Array-Wert. 2. In diesem Fall kann der 2. Parameter, analog zu anderen XProfan-Funktionen, auch weggelassen werden: var string Zeichen[] = explode("Hugo")
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 | 22.10.2009 ▲ |
|
|
|