Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Verschachtelte Schleifen. Was ist falsch?
HenryHux - Sa 25.09.10 15:13
Titel: Verschachtelte Schleifen. Was ist falsch?
Hi,
versuche mich an so etwas hier
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| EinBild:= Tbitmap.create; NochEinBild:= Tbitmap.create; EinBild.LoadFromFile(Path+'image2.bmp');
repeat for i := 1 to 30 do begin NocheinBild.LoadFromFile(Path+'Ordner1\'+'K'+inttostr(i)+'.bmp'); Diff := CompareImages(EinBild, NocheinBild); end; if Diff=0 then begin label1.caption:='Die Karte ' + inttostr(i) + ' brachte vollständige übereinstimmung'; end; einbild.free; nocheinbild.free; Zeit:=now+1.0*(1.0/86400.0); while (now<=Zeit) do Application.processMessages; until Diff=0; |
Kriege nach dem ausführen immer folgenden Fehler ohne Quelle:
---------------------------
Debugger Exception Notification
---------------------------
Project Read1.exe raised exception class EAccessViolation with message 'Access violation at address 00000000. Read of address 00000000'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
Also ich will eine Schleife durchlaufen lassen, in der die Ähnlichkeit zwischen 30 sich oft ändernden Elementen geprüft wird. Das mache ich mit einer for-Schleife.
Alleine klappt das gut.
Doch wenn ich das jetzt sooft machen will, bis er in diesen 30 Elementen eins gefunden hat, was sich auf den Wert 0 geändert hat, wie mache ich das?
Hoffe das war nicht ein bisschen verwirrend ausgedrückt =)
Dankeschön
Jakob_Ullmann - Sa 25.09.10 15:48
Naja, du erstellst es vor der Schleife mit Create. In der Schleife gibst du es mit Free() frei. Dann ist das halt beim nächsten Schleifendurchlauf nil. Kurz: Es ist nicht mehr da. (nil ist ein Pointer auf die Adresse 0x0000...)
Übrigens: Formatiere mal deinen Quellcode.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| EinBild:= Tbitmap.create; NochEinBild:= Tbitmap.create; EinBild.LoadFromFile(Path+'image2.bmp');
repeat for i := 1 to 30 do begin NocheinBild.LoadFromFile(Path+'Ordner1\'+'K'+inttostr(i)+'.bmp'); Diff := CompareImages(EinBild, NocheinBild); end; if Diff=0 then begin label1.caption := 'Die Karte ' + inttostr(i) + ' brachte vollständige übereinstimmung'; end; einbild.free; nocheinbild.free; Zeit:=now+1.0*(1.0/86400.0); Sleep(1000); Application.ProcessMessages; until Diff=0; |
HenryHux - Sa 25.09.10 16:17
Ok, danke das war ein Fehler von mehreren. Weiter oben waren noch ein paar weitere.
Jetzt habe ich aber das Problem, dass er glaube nicht mehr aus der Schleife rauskommt.
Er macht das, was er soll wenn der Wert 0 erreicht hat, aber das Fenster lässt sich dann aber immernoch bewegen.
Also wie kann ich ihn komplett aus der Schleife rausholen?
Und 2tens ich habe einen wirklich sehr, sehr langen Quelltext, den ich automatisieren will.
Der hat verschiedene Phasen.
Ich will aber nicht alles auf einen Button legen. Kann ich mehrere Button programmieren und die hintereinander setzten.
Also gibt es Befehle wie z.B buttonx.click?
Danke
Jakob_Ullmann - Sa 25.09.10 16:27
Zitat: |
Also gibt es Befehle wie z.B buttonx.click? |
Wüsste ich jetzt nicht. Aber du kannst einfach die verlinkte Prozedur aufrufen:
ButtonXClick(nil);
Bergmann89 - Sa 25.09.10 17:20
Hey,
ButtonX.Click geht, ruft glaube intern auch nur das OnClick-Event auf. Aber wenn du nich wirklich einen Button brauchst, sondern nur den Quelltext aufteilen möchtest nimm eine Prozedur!
MfG Bergmann.
Martok - Sa 25.09.10 17:27
Hallo,
bitte erstelle für jede deiner Fragen ein separates Topic, da die Diskussion mehrerer Fragen in einem Topic für gewöhnlich für Verwirrung und Durcheinander sorgt. Daher:
*geschlossen*
Viele Grüße,
Martok
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!