Announcement

Collapse
No announcement yet.

einen teil vom string auslesen

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

  • einen teil vom string auslesen

    hi leute...

    ich bräuchte mal wieder nen kleichen gedankenanstoss...und hoffe, mir kann hier jemand helfen...

    ich habe einen string, der folgendermaßen aussieht;

    <pre>
    <b>DE-00001-12-2005</b> oder <b>BRAND-01247-05-2004</b>
    </pre>

    nun möchte ich die ersten zeichen bis zum ersten trennstrich auslesen...die erste zeichenkette ist variable(max. 5 zeichen).

    jetzt möchte ich in einem label z.B. <b>DE</b> oder <b>BRAND</b> ausgeben...

    wäre toll, wenn jemand da eine idee hätte...

    vielen dank schon jetzt...

    mfg
    ice

  • #2
    Ich schreibe es mal aus dem kopf herraus, hab es also nicht kontrolliert. ggf. mal unter den befehlen nachgucken, wie die genaue parameter abfolge ist. kann also sein, das du z.b. die parameter reinfolge von pos umdrehen mußt.
    ggf. stimmt auch nicht die länge des strings.

    function GetFirstString(s: string): string;
    begin
    result:=copy(s ,1 , pos(s,'-')-1 );
    end

    Comment


    • #3
      Mein alte Tokenfunktion
      *
      function Token ( cString,cTrennstring:String;nToken:Integer ): String;
      var cText : String;
      nAnzahl, nPos, nMaxlen : integer;
      nCount, nBegin, nEnde : integer;
      begin
      //cString := cString + cTrennstring;
      cText := '';
      if nToken <= TokenAnzahl ( cString,cTrennstring )+1 then
      begin
      nBegin := 0;
      nEnde := 0;
      nAnzahl := 0;
      nMaxlen := len(cString) - len(cTrennstring);
      For nCount := 1 to nMaxlen do
      begin
      if copy(cString,nCount,len(cTrennstring))=cTrennstrin g then
      begin
      inc(nAnzahl);
      if nAnzahl = nToken-1 then nbegin := nCount + len(cTrennstring);
      if nAnzahl = nToken then
      begin
      nEnde := nCount;
      break;
      end;
      end;
      end;

      if nAnzahl > nToken-2 then
      begin
      if nBegin = 0 then nBegin := 1;
      if nEnde = 0 then nEnde := len(cString)+1;
      end;

      cText := copy( cString, nBegin, nEnde-nBegin );
      cText := StrTran( cText, cTrennstring, '');
      end;

      result := cText;
      end;
      *
      *
      cStr := token( 'DE-00001-12-2005', '-', 1) // Ergebnis = DE
      cStr := token( 'DE-00001-12-2005', '-', 2) // Ergebnis = 00001
      cStr := token( 'DE-00001-12-2005', '-', 3) // Ergebnis = 12
      usw
      *
      Oswal

      Comment


      • #4
        Oder gleich mit <a href="http://regexpstudio.com/">RexEx</a> drangehen

        Comment


        • #5
          hallo oswald...

          deine funktion geht nicht...

          ...was ist <b>TokenAnzahl</b>???

          gruß ic

          Comment


          • #6
            Halle ice Sorry...
            *
            Du brauchst zusätzlich noch 2 Funktionen
            *
            - TokenAnzahl - Ermittelt die Anzahl der Elememte
            * Beispiel: TokenAnzahl( 'DE-00001-12-2005', '-') // Ergebnis = 4
            - StrTran - Ersetzt Texte eines Strings
            *
            Im Anhang Token.txt findest du die 3 Funktionen.
            Nun sollte es funktionieren
            *
            Oswal

            Comment


            • #7
              Hallo nochmal
              Ich habe bemerkt das der Anhang "Token.txt" bei mir nicht funktioniert. ???
              Hier nochmal den Quellcode
              *
              // ************************************************** *************************
              function StrTran(Text,Such,Ersetz:string):string;
              var nPos, nCounter :integer;
              begin
              nCounter := 0;
              While Pos(Such,Text)>0 do
              begin
              nPos := Pos(Such,Text);
              Delete(Text,nPos,length(Such));
              Insert(Ersetz,Text,nPos);
              inc(nCounter);
              if nCounter > 255 then
              break;
              end;
              Result := Text;
              end;

              // ************************************************** *************************
              function TokenAnzahl ( cString,cTrennstring:String ): integer;
              var nAnzahl, nPos, nCount : integer;
              cChar : char;
              begin
              nAnzahl := 0;
              while pos( cTrennstring, cString)>0 do
              begin
              nPos := pos( cTrennstring, cString);
              delete( cString, nPos, length(cTrennstring));
              inc(nAnzahl);
              end;
              if length(cString)>0 then
              inc(nAnzahl);
              result := nAnzahl;
              end;

              // ************************************************** *************************
              function Token ( cString,cTrennstring:String;nToken:Integer ): String;
              var cText : String;
              nAnzahl, nPos, nMaxlen : integer;
              nCount, nBegin, nEnde : integer;
              begin
              cText := '';
              if nToken <= TokenAnzahl ( cString,cTrennstring )+1 then
              begin
              nBegin := 0;
              nEnde := 0;
              nAnzahl := 0;
              nMaxlen := length(cString) - length(cTrennstring);
              For nCount := 1 to nMaxlen do
              begin
              if copy(cString,nCount,length(cTrennstring))=cTrennst ring then
              begin
              inc(nAnzahl);
              if nAnzahl = nToken-1 then nbegin := nCount + length(cTrennstring);
              if nAnzahl = nToken then
              begin
              nEnde := nCount;
              break;
              end;
              end;
              end;
              if nAnzahl > nToken-2 then
              begin
              if nBegin = 0 then nBegin := 1;
              if nEnde = 0 then nEnde := length(cString)+1;
              end;
              cText := copy( cString, nBegin, nEnde-nBegin );
              cText := StrTran( cText, cTrennstring, '');
              end;
              result := cText;
              end;
              *
              Oswal

              Comment

              Working...
              X