Forum: Algorithmen, Datenstrukturen und Klassendesign
by idefix2,
22. Jul 2012
Na gut. Ich habe in die schwammige Aufgabenstellung eine Aufgabe hineininterpretiert, die ich gelöst habe. Du hast eine etwas andere Aufgabe hineininterpretiert, die Du gelöst hast. Wir können uns jetzt noch beliebige Zusatzaufgaben ausdenken, Zeilennummern ausgeben, die durchschnittliche Zeichenzahl pro Zeile berechnen, oder was auch immer. Oder wir können es bleiben lassen :)
Übrigens...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by idefix2,
22. Jul 2012
Ja, das stimmt. Aber jedes O, das irgendwo im Text vorkommt, und das nicht von einer passenden Zahl gefolgt wird, als Fehler auszuweisen, kann es sicher auch nicht sein. Die Aufgabenstellung ist sehr schwammig formuliert, und der TE hat sich ja schon lange nicht mehr gemeldet. Wir können also nur darüber spekulieren, wie in so einem Sonderfall vorzugehen ist, und das ist wohl nicht sonderlich...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by idefix2,
22. Jul 2012
Das ist richtig. Fairerweise muss man aber dazu sagen, dass dann der Fall sein wird, wenn das zu erkennende Muster ziemlich komplex ist, und dass ein Programm, das die Erkennung eines so komplexen Musters ausprogrammiert, noch um ein Vielfaches schwieriger zu lesen sein wird als der regex-String.
Forum: Algorithmen, Datenstrukturen und Klassendesign
by idefix2,
22. Jul 2012
Ich weiss nicht mehr, wo genau ich diese Regex Implementierung gefunden habe. Sie ist gratis und darf frei verteilt werden, ich habe sie jetzt hochgeladen. Sie kann leider nicht alles, was die Perl Regex Syntax erlaubt, aber die Einschränkungen sind nicht schlimm. Ich bin z.B. einmal darüber gestolpert, dass (?:...) nicht möglich ist. Nicht auszuschliessen, dass die Version, die bei Delphi-XE2...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by idefix2,
21. Jul 2012
Und unter Verwendung von regex wird daraus dann ungefähr so etwas:
PROCEDURE Checkfile(const fn:string);
var
rgx: TRegexpr;
newnumber,oldnumber: integer;
f: textfile;
s: string;
Forum: Algorithmen, Datenstrukturen und Klassendesign
by idefix2,
19. Jul 2012
Mit dem regex "^O(\d+)" habe ich alle Prüfungen erschlagen und schon den reinen Ziffernstring in match gespeichert, dann einfach ein strtoint(match) (nicht einmal trystrtoint ist nötig, weil in match steht sicher eine Ziffernfolge, wenn regexmatch erfolgreich war). Wenn man will, kann man sogar leicht die Anzahl der Ziffern auf maximal 4, 5 oder irgend etwas sinnvolles beschränken, gefolgt vom...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by idefix2,
19. Jul 2012
Ich habe geschrieben "gewöhnungsbedürftig", aber es zahlt sich eben wirklich aus. Unleserlich ist es nur ganz am Anfang - wie so ziemlich alles, was neu ist, auch ein gut geschriebenes Delphi Programm ist für einen Programmieranfänger grösstenteils unverständlich. Wenn man sich einmal mit ihnen angefreundet hat, lässt sich mit regulären Ausdrücken weitaus mehr anfangen, als man auf den ersten...