Mein explodeSP() (explode bei space) macht Blödsinn



  • Oklino schrieb:

    Das heißt wenn mir eine vorgefertigte Funktion vorliegt, du nur den link postest und ich mithilfe der BCB-Hilfe jede 2. Zeile zerpflücken und erklären muss(weil ich nicht nur einbauen sondern auch verstehen will), dann is das wirklich nicht sehr motivationsfördernd.

    Niemand hat behauptet das C++ und / oder die VCL einfach ist / sind. Am Anfang ist es nunmal so, dass aus jeder Antwort 15 neue Fragen entstehen. Da muß man sich eben durchbeißen...

    Oklino schrieb:

    Naja was ich übrigens auch nicht verstehe ist, wenn ich den AnsiString wie in dem code oben fülle, dass mir unter [0] z.B. "Hallo" ausgegeben wird wenn jeder index ein zeichen ist... 😕

    Das geht eben ÜBERHAUPT NICHT. Da eben nur ein einzelnes Zeichen darin gespeichert werden kann! Unglücklicherweise steht in AnsiString[0] auch noch die Länge des Strings. Grundsätzlich ist dies Feld also nicht verwendbar.



  • Christian211 schrieb:

    Es gibt nicht die Möglichkeit ein Array von Strings als AnsiString[] anzulegen.

    Wieso nicht?

    AnsiString moep("Hallo");
    AnsiString huhu[] = { moep };
    

    legt ein statisches Array von AnsiStrings der Länge 1 an. Also liegt in huhu[0] der String "Hallo". Auf das erste Zeichen greift man dann mit huhu[0][1] zu (hier "H").



  • Naja, da ist die Verwendung von TStringList doch einfacher und vor allem weniger empfindlich, was Logikfehler betrifft... 🤡



  • Dagegen sagt ja keiner was. Ich wollte nur Christian widersprechen. 🙂
    Wobei ich STL-Klassen bevorzuge wenn TStringList nicht unbedingt benötigt wird. Einfach weil die eine ähnliche Funktionalität anbieten, man aber nicht unbedingt einen Pointer braucht.



  • Ich wollte nur Christian widersprechen
    

    Tja, dass war/ist mir neu -> habe das auch allerdings nie probiert, da ja TStringList vohanden ist



  • guck doch in den quellcode von php und schau wie es dort gemacht wird... 😉



  • Wenn TStringList (und BCB6), dann lässt sich sowas ganz gut mit Delimiter und DelimitedText erledigen.



  • Braunstein schrieb:

    Christian211 schrieb:

    Es gibt nicht die Möglichkeit ein Array von Strings als AnsiString[] anzulegen.

    Wieso nicht?

    AnsiString moep("Hallo");
    AnsiString huhu[] = { moep };
    

    legt ein statisches Array von AnsiStrings der Länge 1 an. Also liegt in huhu[0] der String "Hallo". Auf das erste Zeichen greift man dann mit huhu[0][1] zu (hier "H").

    Also ich danke erstmal all den vielen die geantwortet haben. Was ich noch hinzufügen will, ist, dass ich auf meiner jetzt ja als falsch erkannten Idee mit AnsiString erst beharrte weil ich nach der eingabe von "Hallo ich bin text"

    huhu[0] => "Hallo"
    huhu[1] => "o ic"
    usw. bekommen habe. GAAAAANZ ehrlich 😉

    Werde aber jetzt die TStringList Variante ausprobieren. Achso in der BCB-Hilfe - die mich immer wieder begeistert, bin ich wieder auf ein Verständnisproblem meinerseits gestoßen.... die einzelnen Strings... findet man die dann unter

    strList->Values[0]
    usw. ?



  • unter

    strList->Strings[0];



  • Dann senfe ich hier auch mal was rein.
    Ich habe soetwas neulich auch benötigt, allerdings wird bei mir beim trennzeichen "|" getrennt, und nicht beim leerzeichen.

    String s= "ich|bin|ein|String";
          int durchlauf = 1, akt_pos = 0;
          String s_neu[100];
    
          while (durchlauf <= s.Length())
          {
               if ((String)s[durchlauf] == (String)"|")
               {
                  akt_pos++;
                  durchlauf++;
                }
                else
                {
                  s_neu[akt_pos] +=s[durchlauf];
                  durchlauf++;
                }
          }
    

    damit bekommt man dann:
    s_neu[0]: "ich"
    s_neu[1]: "bin"
    s_neu[2]: "ein"
    s_neu[3]: "String"

    mfg
    Raimond



  • Oklino schrieb:

    Was ich noch hinzufügen will, ist, dass ich auf meiner jetzt ja als falsch erkannten Idee mit AnsiString erst beharrte weil ich nach der eingabe von "Hallo ich bin text"

    huhu[0] => "Hallo"
    huhu[1] => "o ic"
    usw. bekommen habe. GAAAAANZ ehrlich 😉

    Das ist auch weiter nicht verwunderlich. huhu[1] zeigt auf irgendeine Speicherstelle und da steht natürlich auch irgendwas (mit Betonung auf "irgendwas"). Du darfst diesen index aber nicht verwenden da dein Array nur die Größe 1 hat und ein Zugriff auf diesen Index undefiniertes Verhalten erzeugt.


Anmelden zum Antworten