Einzelnen Beitrag anzeigen

Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.077 Beiträge
 
Delphi XE2 Professional
 
#24

AW: String Code überprüfen

  Alt 22. Jul 2012, 13:03
Wie man ernsthaft (hier) *gegen* den Einsatz von RegEx sein kann, ist mir ein Rätsel. Man kann das natürlich per Hand auskodieren, aber RegEx ist einfach zu einfach

Die Fragestellung zielt ganz klar in Richtung Mustererkennung. "Anfang der Zeile", "O<Ziffern><PlusOderMinus>". Ergo ist ein Zeichen-Mustererkenn-O-Mat, aka 'regular expression', das richtige Werkzeug.

Die erkannten regulären Ausrücke (O<Zahl><PlusMinus>) müssen dann nur noch hinsichtlich der 'Zahl' geprüft werden (um 1 inkrementierend).

Der reguläre Ausdruck kann natürlich im Einzelfall ziemlich komplex und sehr(!) schlecht zu lesen sein, aber es gibt mittlerweile RegEx-formatierer und -Kommentierer, die selbst den perversesten Ausdruck verständlich darstellen können.

Hier sind dann übrigens im Einzelfall Kommentare angebracht, obwohl ich sonst kein Freund davon bin.

@Amateurprofi: Googel mal nach "Delphi regEx", druck dir die Ergebnisse aus, stell dich in 100m Entfernung vor den Ausdruck, nimm einen Dartpfeil und werfe rückwärts mit geschlossenen Augen. Du triffst *garantiert* etwas Brauchbares

Oder Du bist Pazifist und suchst in der DP

Es geht ja nicht konkret um die exakte Unit, sondern das Verfahren.

Zum Beispiel kann nicht geprüft werden, ob da vielleicht ein Oxx nicht am Zeilenanfang steht...Ein weiteres Problem, nämlich Oxx zu finden, bei denen das xx nicht direkt dem "O" folgt wird ebenfalls nicht gelöst.
Wir lesen die Aufgabenstellung:
Es muss auch überprüft werden ob unser String auf die erste Reihe geschrieben ist und ob sein Integer Teil sich richtig inkrementiert.
Genau, wir lesen die Aufgabestellung
Es muss auch überprüft werden ob unser String auf die erste Reihe geschrieben ist und ob sein Integer Teil sich richtig inkrementiert.
[/QUOTE]

Und genau das wird eben nicht gelöst.
Wenn zum Beispiel in der Datei die Zeilen
"O27"
"..."
" O28"
"..."
"O28"
stehen, dann würde das eingerückte "O28" übergangen, der Fehler also nicht bemerkt.
Lemomo will ja nicht nur die "Oxx" finden die korrekt sind, sonder er möchte eine komplette Prüfung seiner Datei.
In der Tat!
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat