String teilen



  • Hallo

    Wie gelingt es mir, dass ich (ohne über AnsiC zu gehen) einen String anhand eines Trennzeichens (zum Beispiel ein '=') in zwei Strings teilen kann? Ich wäre für jede Hilfe sehr dankbar!

    Gruß, Balou



  • Die diversen Methoden von AnsiString dürften dir da helfen. (Sofern es sich bei deinem String um einen AnsiString handelt?)

    -junix



  • Wie wärs mit sowas in die Richtung 😉

    int  i_Point  = sValue.AnsiPos("=");
    
    if (i_Point)
    {
        String s_Prefix = sValue.SubString(1,i_Point-1);
        String s_Suffix = sValue.SubString(i_Point+1,sValue.Length()-i_Point);
        s_Result = s_Prefix + "+" + s_Suffix;
    }
    

    JOJO 🙄



  • Es handelt sich um einen String aus einer TStringList. Also TStringListInstanz.Strings[i]. Und nun möchte ich diesen String eben an einer bestimmten Stelle teilen. Das Verfahren via AnsiC ist mir klar, aber die Einbindung der Zeiger in den Code macht mir zu schaffen (es kommt wohl ständig zum Speicherüberlauf - BCB lässt mich aber auch die Größe des Char-Arrays nicht def. - aber ist nun auch egal). Ich programmiere normalerweise nur AnsiC und schreibe aber momentan an einem Programm im BCB. Gibt es da also eine Funktion, die mir weiterhilft? Eine Funtion, die einen oben genannten String an best. Pos. teilen kann?

    Gruß, Balou



  • Original erstellt von <Balou>:
    Gibt es da also eine Funktion, die mir weiterhilft?

    Warum siehst du dir nicht, wie von junix empfohlen, die AnsiStringMethoden in der Hilfe an? Dann kannst du deine Frage selbst beantworten.

    jojo73_de:
    Komplettlösungen bitte nur dann, wenn der Fragesteller nach eigenen Versuchen partout nicht auf den richtgen Weg findet. Danke!



  • Ich dank' dir Jojo...



  • OT, aber vielleicht ist es mal kurz gestattet?

    @Jansen, haben Codebeispiele nicht auch einen enormen Lehreffekt? Grad der Einsteiger steht wohl meist recht unbeholfen vor der Referenz. Die ist im Prinzip eher nur im Beispielbereich gut lehrfähig. Ansonsten...? Die Literatur empfielt, viele Sourcen zu studieren. - Mit der Erfahrung wird man dann auch immer besser die Referenzen verstehen können.

    Oder: Es ist meine Umgebung, mein Kopf. Also will ich auch möglichst viele Räder erkunden. Ist es aber sinnvoll, wirklich alle neu zu erfinden? Jeder hat woanders Stärken und schwächen. Etwas Lockernes, und die Arbeit kann für alle flutschen, Greenhorns kommen sehr schnell und mit Fun in den Bereich, wo sie selbst Piomierleistungen bringen können. Jeder einzelne kommt zügiger voran.

    -Haben sich die Methoden ggf. nur wegen der schnellen, eigentlich desinteressierten User so streng ausgebildet? Dann würde der echte Freak seine Einstellung und sein Verhalten nicht nach den eigenen Interessen und dem eigenen FunFaktor sondern nach uninteressanten Mitläufern ausrichten. *gar_fürchterlich_merxwürdig*

    -Ist es nicht schön, neben den Referenzen auch über eine gepflegte Schnipselsammlung verfügen zu können? 😉 Welchen Sinn hätte dagegen ein so edles Board wie c-plusplus, wenn wirklich nur dieses leider unvermeidliche "FAQ you" zu lesen wäre? Sourcen, vor allem aber sicher die Ergebnisse der Fragesteller 😉 sind einfach was gediegenes; sie sind die Seele 🙂 Wenn ich aber falsch lieg, dann haut ruhig. 😃



  • Mir geht es dabei nicht nur um den Lehreffekt. Wenn ich jemandem helfe, will ich, dass er/sie auch etwas dafür tut und nicht nur meinen Code übernimmt, danke sagt und sich verpisst.



  • Alles schon 100mal durchgekaut, deshalb keine Antwort. Die oben
    angedeutete "Politik" der Hilfe zur Selbsthilfe ist weiter aktuell.

    Und damit genug des OffTopic, sonst wird kommentarlos gelöscht.



  • Ja was ist aber wenn ich einen solchen String habe "ABC=CSF=1243=asff"?



  • Hallo,

    Kommte darauf an was du damit machen willst.
    Soll er in 4 Strings geteilt werden, musst du das Verfahren halt erweitern.
    Oder du schaust dir mal die Hilfe zu StringReplace und die Eigenschaft CommaText von TStringList an.

    Ciao



  • Mach einfach eine Schleife, wo du den Code von Jojo einbaust (oder deinen) mit der Erweiterung, dass die Schleife solange läuft, solange er das Zeichen "=" findet. Dann jedesmal wegschneiden, speichern und von vorne.
    z.B.

    while (String.AnsiPos("=")!=0)
    { 
    ..bla..
    }
    

    Da müsstest du dir natürlich was einfallen lassen, wie du die unbekannte Anzahl der Strings speicherst. Eine Möglichkeit wäre da sich eine dynamische Liste zu bauen.


Anmelden zum Antworten