Announcement

Collapse
No announcement yet.

<>

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • #16
    PS:

    Der Code auf der Internetseite ist eigentlich so aufgebaut, dass er per Copy&Paste in das eigene Projekt hineincopiert wird. Er steht dann als Unterprogramm (Funktion) zu Verfügung.

    Für die Funktion split

    void split(TStringList &name,String eingabe,String delimiter);

    in die Header-Datei (oder im Kopf der cpp-Datei) aufnehmen und den Code irgendwo in der cpp Datei copieren.

    Christia
    Christian

    Comment


    • #17
      kann hier mal jemand ein beispielprojekt darstellen? das funtzt bei mir alles nicht (mit Edit1->Text

      Comment


      • #18
        In solchen Fällen muß man seinen Quelltext - schön formatiert - hier zeigen, damit wir nach Fehlern suchen können
        Günther

        Comment


        • #19
          TStringlist mylist=new TStringlist();<br><br>
          split(mylist,Edit1->Text,"<");<br>
          wert=StrToIntDef(mylist[0],-1);<br>
          if(wert>-1) {Edit2->Text=wert;} else {}<br><br>
          delete mylist

          Comment


          • #20
            Hi Ihr drei,

            wenn ich Eure Vorschläge mal kombiniere habe ich folgenden Vorschlag:<br>
            Funktion für die Split-Routine:<br>
            <pre>
            void __fastcall TForm1::Button4Click(TObject *Sender)
            {
            int nWert;

            TStringList *MyList = new TStringList();

            split(*MyList,Edit1->Text,"<", ">");
            // nWert = MyList->Strings[1].ToIntDef(-1);
            if(MyList->Count > 1){ // Tag gefunden
            nWert = StrToIntDef(MyList->Strings[1], -1);
            if(nWert > -1){
            Edit4->Text = nWert;
            }
            else{
            Application->MessageBox(MyList->Strings[1].c_str(), "Fehler", MB_OK);
            }
            }
            else Application->MessageBox(Edit1->Text.c_str(), "kein Eintrag gefunden", MB_OK);
            delete MyList;

            }
            </pre>

            Sag mal Maik, hast Du Deinen geposteten Code mal Compiliert? Da muss doch Dein Compiler mit Fehlern übergelaufen sein.

            Und eine Frage an Christian:<br>
            Bei mir wandelt die Routine StrToIntDef den String 123> leider nicht um, es kommt der Defaultwert. Ich habe deshalb mir mal erlaubt, Deine Split Routine mit einem EndDelimiter zu erweitern. Jetzt steht das Ergebnis in jedem ungeraden (1,3,..) String der StringList. Habe ich aber nur kurz mit einem einstelligen Delimiter ausprobiert, Allerdings ist noch keine Überprüfung eingebaut ob ein Endzeichen existiert, der Code funktioniert also nur mit vollständigen Tags.<br>
            Bitte entschuldige meine Änderung / Erweiterung deines Codes.

            <pre>
            void TForm1::split(TStringList &name,String eingabe,String StartDelimiter, String EndDelimiter)
            {
            int pos,dellangstart, dellangend;

            TStringList *feld = &name;
            feld->Clear();
            feld->Duplicates=dupAccept;
            dellangstart = StartDelimiter.Length();
            dellangend = EndDelimiter.Length();
            pos = eingabe.AnsiPos(StartDelimiter);
            while(pos > 0){
            feld->Add(eingabe.SubString(1,pos-1));
            eingabe.Delete(1,pos+dellangstart-1);
            pos = eingabe.AnsiPos(EndDelimiter);
            if(pos > 0){
            feld->Add(eingabe.SubString(1,pos-1));
            eingabe.Delete(1,pos+dellangend-1);
            }
            pos=eingabe.AnsiPos(StartDelimiter);
            }
            feld->Add(eingabe);
            }

            </pre&gt

            Comment


            • #21
              Der Code steht öffentlich auf der Website. Kann jeder so verändern wie er es braucht.

              Christia
              Christian

              Comment

              Working...
              X