Hallo Mavarik
Form2. nur deshalb, da die Suchfunktion in einer separaten
Unit liegt.
Der D7 Editor hat ja leider kein Collapse/Expand. Der Übersichtlichkeit halber lagere ich dann
häufig verwendete Routinen in separate Units aus.
Dein Tip funktioniert übrigens auch, bringt aber im Programmlauf auch keine Besserung.
Ich habe jetzt im Code einige Debugeinträge mitloggen lassen.
Code:
[28.03.2015, 12:11:53] - --- Begin Search ---
[28.03.2015, 12:11:53] - --- Image laden... Durchlauf 1
[28.03.2015, 12:11:53] - --- Suchergebnis: 1|1195|197|15|6
[28.03.2015, 12:11:53] - --- Koordinaten gefunden: 1195:197 - Toleranz: 65
[28.03.2015, 12:11:53] - --- DrawRedRectangle: Rechteck gezeichnet bei 1195:197
[28.03.2015, 12:11:53] - --- Image laden... Durchlauf 2 // Hier wird jetzt das neue Image mit dem Rechteck geladen (Rechteck ist physikalisch vorhanden)
[28.03.2015, 12:11:53] - --- Suchergebnis: 1|1195|197|15|6 // es wird aber trotz Übermalung weiterhin das Suchbild an der gleichen Position gefunden
[28.03.2015, 12:11:53] - --- Koordinaten gefunden: 1195:197 - Toleranz: 65
[28.03.2015, 12:11:53] - --- DrawRedRectangle: Rechteck gezeichnet bei 1195:197
[28.03.2015, 12:11:53] - --- Image laden... Durchlauf 3
[28.03.2015, 12:11:53] - --- Suchergebnis: 1|1195|197|15|6
[28.03.2015, 12:11:53] - --- Koordinaten gefunden: 1195:197 - Toleranz: 65
[28.03.2015, 12:11:53] - --- DrawRedRectangle: Rechteck gezeichnet bei 1195:197
[28.03.2015, 12:11:53] - --- Image laden... Durchlauf 4
[28.03.2015, 12:11:54] - --- Suchergebnis: 0
[28.03.2015, 12:11:54] - --- End Search ---
Die Suchfunktion bringt trotz des roten Rechtecks im Bild immer wieder die gleichen Koordinaten, als ob das Rechteck
nie gezeichnet wurde.
Mir kommt das so vor, als ob erstgeladene Bild in einer Art Cache liegt und statt des darübergeladenen
neuen Bilds immer und immer wieder verwendet wird.
Kann es sowas geben?
@himitsu
ImageSearchDLL.dll implementiert eine Pixelbereichssuche nach einem Bild auf dem Bildschirm, unterstützt durch die
Angabe einer Farbtoleranz.
Die Funktion wurde hier im Forum bereits vor einiger Zeit gepostet.
http://www.delphipraxis.net/141240-b...-absuchen.html
Deine Einwände sind durchaus berechtigt, danke. Der Programmcode läuft z.Zt. allerdings noch im lokalen Test.
Von daher sind mir die Pfadangaben erstmal unwichtig, solange sich alles im Exepfad abspielt.
Sobald es läuft, wird alles nochmals grundüberholt und aufgeräumt.
Split kracht auch nicht, da in der Prozedur mit Assert gearbeitet wird.
Delphi-Quellcode:
procedure Split(const Delimiter: Char; Input: string; const Strings: TStrings);
begin
Assert(Assigned(Strings));
Strings.Clear;
Strings.Delimiter := Delimiter;
Strings.DelimitedText := Input;
end;