: aus String ausfiltern

Für allgemeine Fragen zur Programmierung mit PureBasic.
funkheld
Beiträge: 636
Registriert: 31.12.2009 11:58

: aus String ausfiltern

Beitrag von funkheld »

Hallo, guten Tag.

Ich bekomme folgend String, wo sich die Werte ändern:
":123:6789:345"

Nun möchte alle 3 Werte ausfiltern und je Wert einem anderen String übergeben
Wie geht das rausfiletrn bitte ?

Danke.
Gruss
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: : aus String ausfiltern

Beitrag von RSBasic »

So?

Code: Alles auswählen

EnableExplicit

Define a
Define String$ = ":123:6789:345"

For a=1 To CountString(String$, ":")
  Debug StringField(String$, a, ":")
Next
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
funkheld
Beiträge: 636
Registriert: 31.12.2009 11:58

Re: : aus String ausfiltern

Beitrag von funkheld »

Danke.
Die Werte brauche ich.
Der Befehlsname irritiert mich. Hätte ich nicht gefunden.

Gruss
Benutzeravatar
DarkSoul
Beiträge: 689
Registriert: 19.10.2006 12:51

Re: : aus String ausfiltern

Beitrag von DarkSoul »

Das habe ich mich auch schon immer gefragt und ich habe lange Zeit einen Eigenbau genutzt, bis ich den nach Jahren mal zufällig entdeckt habe. :mrgreen:

In anderen Programmiersprachen würde es SplitString(trennzeichen) oder .split() oder so heißen.

Auch in meinen Augen eine absolute Fehlbenennung.

Wurde vielleicht aus den alten QBasic-Zeiten übernommen? Wobei ich mich noch gut daran erinnern kann, dass die Funktion dort tatsächlich gefehlt hat und man das selber zerhackstückeln musste.

Da sie in QB gefehlt hat,, hatte ich auch geglaubt, sie würde in PB bzw. allen Basic-Sprachen fehlen. :freak: >:)
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: : aus String ausfiltern

Beitrag von RSBasic »

DarkSoul hat geschrieben:Auch in meinen Augen eine absolute Fehlbenennung.
So ist das halt in Programmiersprachen. Jede Programmiersprache hat ihre eigenen Namen. Ich wäre zwar auch dafür, dass die einzelnen Funktionsnamen überall gleich sind, damit die Namen einheitlich sind und man beim Arbeiten mit einer anderen Sprache nicht ständig überlegen oder nachschauen muss, wie die Funktion dort heißt, aber kann man leider nichts machen.
Da gibt es noch andere Beispiele...
Beispiel 1:
  • ASP: InStr()
  • Javascript: indexOf()
  • PB: FindString()
Beispiel 2:
  • ASP: Mid()
  • Javascript: substring()
  • PB: Mid()
Beispiel 3:
  • ASP: LCase()
  • Javascript: toLowerCase()
  • PB: LCase()
Beispiel 4:
  • ASP: Len()
  • Javascript: length()
  • PB: Len()
Beispiel 5:
  • ASP: CStr()
  • Javascript: toString()
  • PB: Str()
Beispiel 6:
  • ASP: Replace()
  • Javascript: replace()
  • PB: ReplaceString()
Beispiel 6:
  • ASP: StrReverse()
  • Javascript: reverse()
  • PB: ReverseString()
Das ist bei jeder Sprache so, auch in Basic-Sprachen gibt es Namensunterschiede.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
DarkSoul
Beiträge: 689
Registriert: 19.10.2006 12:51

Re: : aus String ausfiltern

Beitrag von DarkSoul »

Schon klar, dass die Namen unterschiedlich sind. Aber all deine Beispiele sind so benannt, dass sofort klar ist, was die jeweilige Methode macht. Das ist IMHO bei StringField() nicht der Fall. <)

PS: Bei JavaScript ist .length keine Methode, sondern eine Property (ohne Klammern) und die JavaScript-Entsprechung von mid() ist substr() und nicht substring() *klugscheißerisch-zungeraussteck*
Bild
Benutzeravatar
Then
Beiträge: 247
Registriert: 06.09.2004 13:26
Wohnort: Siegen

Re: : aus String ausfiltern

Beitrag von Then »

Naja, StringField = Feld im String, also eigentlich recht logisch. Feld 1 im String "aaa,aba,abb," mit Trennung KOMMA ist "aaa". Wenn alle Befehle und Kommandos gleich wären, wozu dann noch andere Sprachen ?! :freak:

Daher ja die unterschiedlichen Sprachen. Kaffee heißt ja auch nicht überall Kaffee !

Meine Meinung ist auch, dass es hier ein BASIC ist und BASIC bedeutet doch einfach/simpel. Manche Codes hier sind jedoch nicht wirklich einfach, sondern sehr komplex und professionell. Das schreckt sicherlich auch die Neulinge ab. Ich programmiere viel und schreibe einige (für mich) nützliche Programme. MP3-DJ-Player, Lichtsteuerungen, Auftragsbearbeitungen, Kassensoftware, Renamer etc. Da werde ich oft gefragt, in welcher Sprache ich das mache. Ich schwärme dann von PureBasic, und wie einfach die Sprache sei, weils ein BASIC ist. Wenn die Kumpels dann im Forum auf Quellcode stoßen, die sehr professionell sind mit "& | %" oder so, dann messen die bei mir Fieber.
Die einfachen logischen und normalen Befehle schätze ich sehr und das macht die Sprache leserlich und einfach. Also, blos nix groß verändern, sonst verliert PureBasic das BASIC
PB 5.62 / Windows 11 64Bit (i5/32GB/240GB-SSD+3TB-HDD/1050GTX4GB) / 27" Multitouch Monitor

... ich mache dazu keine Aussage, weil ich mich damit selbst belasten könnte !
Benutzeravatar
Josh
Beiträge: 1028
Registriert: 04.08.2009 17:24

Re: : aus String ausfiltern

Beitrag von Josh »

Die Bezeichnungen sind in beiden Fällen richtig, da sie auch unterschiedliche Sachen machen:


StringField in Pb:
Es wird genau ein Teilstring zurückgegeben, der sich durch das Trennzeichen ergibt.

Split in anderen (Basic) Sprachen:
Es wird ein Array aus Strings zurückgegeben, das sämtliche Teilstrings enthält, die sich durch das Trennzeichen ergeben.

Mir ist die Pb-Version lieber, da ich nicht gezwungen bin, ein Array anzulegen.
Split ist wahrscheinlich schneller, wenn ich viele Teilstrings durchlaufen muss.
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: : aus String ausfiltern

Beitrag von mk-soft »

Für SplitString habe ich etwas für euch...

Link: http://www.purebasic.fr/english/viewtop ... 12&t=69557
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
DarkSoul
Beiträge: 689
Registriert: 19.10.2006 12:51

Re: : aus String ausfiltern

Beitrag von DarkSoul »

Meine Meinung ist auch, dass es hier ein BASIC ist und BASIC bedeutet doch einfach/simpel.
Hmmm. Ich finde, das ist heute nicht mehr der Fall.

Basic gab es schon auf diesen "Heimcomputern" in den 80ern und war damals durchaus wesentlich einfacher für Anfänger, als ASM und andere frühe Programmiersprachen. Ein C-Compiler war für Anfänger schwierig zu handhaben und man musste bereits ein gewisses Grundwissen haben, um überhaupt etwas compilierbares zu schreiben. Wenn man Mist gebaut hat, hat der C-Compiler das klaglos ohne jede Warnung gefressen und der gesamte Computer ist beim Testen abgestürzt. Daher war Basic eine Anfängersprache, zumal sie damals leicht verfügbar war, da viele Betriebssysteme einen Basic-Interpreter mitbrachten. Damals war es auch für Endanwender noch üblich, selber zu programmieren (oder Quellcodes abzutippen), um die Maschine überhaupt nutzen zu können. Und wenn es nur eine Hello-World-Endlosschleife war.

Ich habe auch mit Basic angefangen, allerdings erst in den frühen 90ern unter DOS und ohne jede Hilfe aus dem Internet.

Ich habe erst irgendwelche unsinnigen Print-Input-Print-Input-Textadventures gebastelt und später kleinere Jump'n'Run-Spiele gebastelt.
Doch schnell stieß ich an die Grenzen von Basic. Es war furchtbar lahm, begrenzt und ohne Mausunterstützung (dafür haben die Befehle einfach gefehlt). Die damals üblichen 64kb Arbeitsspeicher waren nicht voll nutzbar, weil der Interpreter einen großen Teil davon selber brauchte. Manche Tasten ließen sich nicht ansprechen und Sound und SVGA war in weiter Ferne..... Man sah den Programmen an, dass sie in Basic erstellt wurden, denn alles war furchtbar pixelig und ohne vernünftigen Sound. Double-Buffering war nur über Umwege zu haben. Ich fing an, vorkompilierte Assemblerroutinen in Stringvariablen reinzupfuschen und diese auszuführen, um die Grenzen zu umschiffen. Zudem war das eine interpretierte Sprache und ohne Interpreter war das ganze nicht ausführbar.

Heute ist alles wesentlich weiter entwickelt. Diese Grenzen von damals gibt es nicht mehr. Heute kann man mit PureBasic, VisualBasic und wie sie alle heißen, richtige ernsthafte Programme schaffen, denen man nicht ansieht, dass da ein Basic im Spiel war. Die Zeiten von "10 Print blabla : Goto 10", in denen es undenkbar war, eine Finanzbuchhaltungssoftware in Basic zu entwickeln, sind vorbei.

Neben Basic gibt es viele Programmiersprachen, die genauso als Anfängersprache taugen: Java, JavaScript, Visual XYZ, Python und dank unterstützender IDEs auch C oder C#. Ein "while (true) : printf(...);" in die leere main()-Methode eines neuen Projektes ist heute genauso einfach. Und wenn der Compiler meckert, gibt es oft auch gleich Tipps, wie es behoben werden kann. Noch besser: Tool zum grafischen Bearbeiten von GUIs aufrufen, Label rein, "Hello World" reinschreiben und keine einzige Zeile Code schreiben (das war meine erste iOS-"App" :D ).

Daher ist Basic heute gegenüber anderen Sprachen keine wirkliche Anfänegrsprache mehr.
Manche Codes hier sind jedoch nicht wirklich einfach, sondern sehr komplex und professionell.
Und genau das ist heute möglich, da der Unterschied zwischen einfachen und professionellen Programiersprachen immer mehr verschwimmt. Versuche das mal mit einem alten DOS-Basic ohne Assemblerbasteleien. Da ist ein einfacher Texteditor schon ein Problem. :mrgreen:

Gerade diese Visual XYZ, die alle dasselbe Framework benutzen, sind IMHO untereinander austauschbar, gleich schwer und gleichwertig im Funktionsumfang.
Zwischen PB und C ist der Unterschied auch nicht so riesengroß. C ist anfängefreundlicher geworden, während PB trotz "Basic" im Namen auch für Fortgeschrittene und Profis geeignet ist.
Das "wertvolle" an PB ist die mitgelieferte und bereits fertig eingebundene Bibliothek, die man sich unter C zunächst zusammensuchen und selbst einbinden muss. Bei letzterem hat man denn die Gretchenfrage: Welche der zig verfügbaren Libs nehme ich denn jetzt? Ohne diese voreingebundene Bibliothek hätte PB kaum einen Vorteil gegenüber C.

Basic ist für mich nur noch ein Name für eine Programmiersprache. Man sollte das "B" aus dem Namen streichen! Es ist dfür mich daher auch nicht verwerflich wenn ein professionelller Softwareentwickler Basic statt C nutzt. :mrgreen:

PS: Die logischen Verknüpfungen und das Modulo gab es schon zu Urzeiten von Basic. Auch wenn sie damals als Wort geschrieben (so wie heute noch bei der Verknüpfung der einzelnen Bedingungen in den Ifs). Ansonsten hat PB sprachlich bereits vieles von den damaligen Basics verloren. Nur die Ähnlichkeit zum damaligen Basic beim ganz groben Hinsehen und die Tatsache, dass die Sprache imperativ ist, sind übrig geblieben. :)
Bild
Antworten