![]() |
Hi Luckie,
Warum soll das denn nicht gehen ? :roll: Setze ich INNERHALB der Schleife die Zähler-Variable auf einen anderen Wert nimmt er den zugewiesenen als nächsten und macht weiter, als sei nichts geschehen. Wenn innerhalb der Schleife z.B. jeder zweite Wert genommen werden soll, d.h. einer wird jeweils übersprungen, würde ich gennauso vorgehen, nur halt i mod 2 = 0 verwenden (oder = 1). Mit AddItem wird dannn nur jeder zweite Wert mit berücksichtigt. Gruß Hansa |
Zitat:
|
Hi,
tatsächlich, habe es ausprobiert. So soll man es ja normalerweise auch nicht machen. Habe auch eine Stelle im Programm, wo ich das brauche,aber wo ? Und das geht nicht!!! :mrgreen: So ein Mist. In einem kleinen Programm brauch ich das. Na ja, dann eben mit while, ist logischer und sicherer, wenn es geht. Diese Sch... Exit-Sachen. Jetzt bin ich ja zumindest vorgewarnt und behaupte das Gegenteil. Aber die Compiler-Schalter müßte man sich doch noch ansehen. Gruß Hansa P.S.: Bist Du echt in Tennessee? Dann versteh ich die Uhrzeit. :cat: Die Katze kann ja dann Jack Daniels trinken. |
Man muß sich mal den ASM-Code für so eine for-Schleife ankucken. Wenn du da die Zählvarible änderst, wirst du wohl den Inhalt der Register ordentlich durcheinander bringen und deswegen verhindert Delphi die Kompilierung.
Allerdings kenne ich mich mit ASM nicht besonders aus, weswegen ich mich da nicht so festlegen will, ist nur eien Vermutung. In Tennessee bin ich leider nicht, da wäre ich aber gerne, in Memphis eben oder Los Angles am Strand oder so. Und den Jack Daniels trinke ich schon selber, mach dir da mal keine Sorgen. :P |
Möglich wäre es auch so:
Code:
for i := 0 to 9 do
begin if i = 4 then Continue; tuedies := unddas; end; |
Hallo Christian,
Zitat:
@Daniel, so habe ich es bisher gelöst, dennoch Danke. Ich bin nur auf der suche, nach etwas Performance-Technischen möglichkeit, oder wie man sachen leichter und einfacher machen kann, ohne immer das zu benutzen, was sich am leichtesten schreiben lässt. :mrgreen: Zitat:
Also, 0 to 5. Der dritte soll übersprungen werden. i hat gerade 2, ich schreibe in diesem Druchgang i := i +1, der nächste durchgang ist bereits 3, somit hätte ja meine änderung nichts bewirkt. Ich müsste es doch auf i := i +2 setzen. Eigentlich müsste ich i 2 durchläufe vorher +2 setzen, bei 1 schon. Aaarghh, mein Kopf expodiert gleich. Es ist eh schon zu früh. :freak: ODer? Wenn ich mir da so durchdenke, werd ich ständig verwirrt. Hmm... Grüsse, Daniel :hi: |
Hallo Luckie,
Zitat:
Code:
MfG,
[b]procedure[/b] Produce();
[b]var[/b] i: Integer; p: ^Integer; [b]begin[/b] [b]for[/b] i := 0 [b]to[/b] 9 [b]do[/b] [b]if[/b] (i = 4) [b]then begin[/b] ShowMessage(IntToStr(i)); p := @i; p^ := i + 1; ShowMessage(IntToStr(i)); [b]end[/b]; [b]end[/b]; d3g |
Man braucht das gar nicht irgendwie kompliziert über ASM machen.. es reicht schon ganz normal über einen Pointer auf die Zählvariable zuzugreifen:
for i := 0 to x do Integer(Pointer(@i)^) := i + 1; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz