Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 14 von 14

Thema: String vergleichen bzw. finden

  1. #11
    Registriert seit
    07.10.2013
    Beiträge
    96
    Danke
    7
    Erhielt 11 Danke für 10 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hab was:
    PROGRAM MAIN
    VAR
    Such_String:STRING(255);
    Wort1:STRING;
    Suche_nach:STRING;
    L_Surce:INT;
    L_Search:INT;
    i: INT;
    _Resultat: INT;
    END_VAR

    Such_String:='Wir suchen nach mindestens drei verschiedenen Eingaben, die eifach gefunden werden sollen, wenn drei zwi mal vorkommt';(*Hier wird gesucht*)
    Wort1:='drei';(*danach wird gesucht*)
    L_Surce:=LEN(Such_String);(*Stringlaenge Qellstring*)
    L_Search:=LEN(Wort1);(*Hier der Suchstring*)
    i:=0; (*Soll uch dabei sein*)
    WHILE i < (L_Surce-L_Search) DO (*Wir beenden die Suche an der richtigen Stelle*)
    Suche_nach:=MID(STR:=Such_String,LEN:=L_Search,POS:=i);
    IF (Suche_nach=Wort1) THEN _Resultat:=_Resultat+1;END_IF;(*fall mehrmals vorgekommen*)
    i:=i+1;
    END_WHILE;
    Geändert von Irek (01.01.2015 um 23:56 Uhr)

  2. #12
    Registriert seit
    16.03.2014
    Beiträge
    359
    Danke
    74
    Erhielt 45 Danke für 38 Beiträge

    Standard

    Hallo zusammen,
    damit man das alles mal tracen kann, habe ich es als Schrittkette formuliert.

    Beste Grüße Shrimps

    Code:
    PROGRAM MAIN
    VAR
        zch            : STRING;
        text            : STRING;
        Helfer        : STRING;
        Position        : INT;
        laenge        : INT;
        Anzahl        : INT;
        schritt        : INT;
    END_VAR
    
    CASE schritt OF
    
    0:
        text     := 'Dies ist der eingegebenze Text zum durchsuchenz';
        helfer := text;
        zch     := 'enz';
        laenge := LEN(helfer);
        schritt := schritt +1;
    
    1:
        Position := FIND(Helfer,zch);
        IF position > 0 THEN
            Anzahl     := Anzahl +1;
            laenge      := laenge - position - LEN(zch) +1;
            helfer     := MID(helfer,laenge,position + LEN(zch));
        ELSE
            schritt := 99;
        END_IF
    
    99:; (* fertig *)
    
    END_CASE

  3. #13
    Registriert seit
    16.03.2014
    Beiträge
    359
    Danke
    74
    Erhielt 45 Danke für 38 Beiträge

    Standard

    Hallo Bastler,
    nun läufts (zumindest bei mir )

    Ich hab mal alles kommentiert

    Viel Spaß
    LG
    Shrimps

    Code:
    FUNCTION Anzahl : INT
    VAR_INPUT
        zch        : STRING;    (* Der Suchstring *)
        text        : STRING;    (* Der zu durchsuchende Text *)
    END_VAR
    VAR
        Position     : INT;        (* Die ggf. gefundene Position *)
        Laenge     : INT;        (* Die aktuelle Laenge des (Restlichen) Textes *)
        Hilfsstring : STRING;    (* Hier drin wird der Teilstring gesichert, ist leichter zu debuggen *)
    END_VAR
    
    Hilfsstring     := text;                (* Wir sichern das Original *)
    Laenge         := LEN(Hilfsstring);        (* Nun die Startlaenge ermitteln *)
    Anzahl := 0;                        (* Wir starten mit 0 gefundenen *)
    
    Position := FIND(Hilfsstring, zch);        (* Eine erste Suche *)
    
    WHILE Position > 0 DO                (* Nun solange zwischen While / end_while laufen bis nichts mehr gefunden wurde *)
    
        Anzahl         := Anzahl +1;        (* Da wir hier angekommen sind, haben wir einen Treffer *)
    
        Laenge         := LEN(Hilfsstring) - Position - LEN(zch) +1;        (* Die Restlaenge berechnen, hier hatte ich den Fehler (+1 vergessen) *)
        Hilfsstring     := MID(Hilfsstring,laenge,position + LEN(zch));    (* Den neuen Reststring zusammenbauen *)
        Position         := FIND(Hilfsstring, zch);                    (*  Nun innerhalb der Schleife suchen, dito oben *)
    
    END_WHILE
    
    (* Hier ist das Ende wenn Position = 0 wird *)
    (* Der Rücksprung einer Funktion übermittelt automatisch den letzten Wert der Funktion: Anzahl, hier oben als INT definiert *)
    
    PROGRAM MAIN
    VAR
        Beispiel        : STRING ;    (* Hier legen wir die Eingabe rein *)
        Suche          : STRING ;    (* Dies simuliert den Suchtext *)
        Cnt1, Cnt2    : INT;        (* Dies ist der Zaehler für das Ergebnis der eigenben Funktion *)
    END_VAR
    
    beispiel     := 'Dies ist der eingegebenze Text zum durchsuchenz';    (* Vorbelegn des Beispiels *)
    Suche    := 'enz';                                            (* dito Suchtext *)
    
    Cnt1 := Anzahl(suche,beispiel);                                (* Aufruf der eigenen Funktion *)
    
    (* darf man auch so machen: *)
    
    Suche    := 'i';                                                        (* dito Suchtext *)
    Cnt2 := Anzahl(zch:= Suche, text:= Beispiel);                                (* Aufruf der eigenen Funktion *)

  4. Folgender Benutzer sagt Danke zu shrimps für den nützlichen Beitrag:

    bastler (03.01.2015)

  5. #14
    bastler ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    03.10.2008
    Beiträge
    232
    Danke
    8
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo shrimps
    Tausend Dank an shrimps, jetzt läuft alles wie es soll.
    Auch den Code von mir konnte ich erfolgreich einbinden.
    Nochmals vielen, vielen Dank für die Arbeit, die du dir gemacht hast.

  6. Folgender Benutzer sagt Danke zu bastler für den nützlichen Beitrag:

    shrimps (03.01.2015)

Ähnliche Themen

  1. String vergleichen
    Von Bensen83 im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 14.07.2015, 10:52
  2. Datum bzw Uhrzeit in String bzw CHAR
    Von olddragon im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 14.03.2012, 13:48
  3. TwinCat - string in array finden.
    Von Gerri im Forum CODESYS und IEC61131
    Antworten: 2
    Letzter Beitrag: 15.02.2011, 10:35
  4. String vergleichen
    Von enter im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 12.02.2008, 09:19
  5. Einsatz EEProm bzw Datum vergleichen
    Von leonhard_II im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 23.12.2006, 12:53

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •