Hi,
ich würde deinen Bild-String erstmal in einzelne Buchstaben trennen bzw. kleine Bildchen für die Buchstaben. Also für jeden Buchstaben ein Bild. Einfach als Trennsymbol eine Vertikale weiße Linie = Neuer Buchstabe. So bekommst du für jeden Buchstaben/Symbol ein kleines Bildchen. Du hast vermutlich inzwischen von jedem Buchstaben/Symbol ein kleines Bildchen angelegt mit denen du vergleichst. Damit du pro Buchstabe nicht alle Bildchen vergleichen muss, kannst du die Anzahl der möglichen Buchstaben ja nochmal ein schränken. Wenn dein 'Prüfsymbol' z.B. 2 Pixel breit ist, dann reicht es ja mit allen Buchstaben zu vergleichen die nur 2 Pixel Breit sind. so kannst du dir Vergleiche mit breiteren Buchstaben wie dem 'm' gleich mal sparen. Dann kommt es auch nicht zu deinem Problem mit dem 'd' dass als '
dl' erkannt wird, weil du mit dem 'l' gar nicht mehr vergleichst da es nicht breit genug ist und somit von vorneherein aussortiert wird. Zum anderen kannst du überprüfen wie viele Pixel des 'Prüfling' mit dem Potentiellen Buchstaben übereinstimmen. ein 'd' hat dann sicher keine 100%ige Übereinstimmung mit dem 'l'. Oder du machst eine XOR verknüpfung der beiden Bilder. Wenn das Ergebnis dann ein einfarbiges Bild ergibt hast du einen Treffer. Und bei 'd' und 'l' gibt das dann kein einfarbiges Ergebnis bei einer XOR Verknüpfung.
Ok, mehrere weiße Vertikale Linien sind dann eben ein Leerzeichen. Da muss man noch aufpassen
Wobei der Ansatz einer Überarbeitung bedarf wenn die Zeichen alle gleich breit sind wie z.B. bei 'Courier New' oder anderen Mono Space Schriftarten.
kleiner Schönheitsfehler bei der Idee: Das Zeichen " (Doppelte Anführungszeichen) wird als evtl. als '' (Zwei Apostrophe) erkannt, oder gar nicht. Da muss man dann einen Sonderfall einbauen.
Btw: mal was anderes... welche Font hast du? Da kann es je nach Font zu Problemen kommen. Ein großes 'I' und ein kleines 'L' sehen in Arial z.B. gleich aus.
Ich hoffe die Idee hilft dir weiter.
Gargoyl
[EDIT]
Oh während ich getippt habe, war Dax schon mit der gleichen Idee schneller [/EDIT]