AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Möglichkeiten einen Schritt der for-Schleife zu überspringen
Thema durchsuchen
Ansicht
Themen-Optionen

Möglichkeiten einen Schritt der for-Schleife zu überspringen

Ein Thema von Daniel B · begonnen am 5. Nov 2002 · letzter Beitrag vom 6. Nov 2002
Antwort Antwort
Seite 2 von 2     12   
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#11
  Alt 6. Nov 2002, 00:51
Hi Luckie,

Warum soll das denn nicht gehen ? 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
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#12
  Alt 6. Nov 2002, 00:55
Zitat:
Warum soll das denn nicht gehen ? 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.
Genau das habe ich ja versucht in meinem Beispiel, aber das kompiliert dir Delphi nicht.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#13
  Alt 6. Nov 2002, 01:31
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!!! 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. Die Katze kann ja dann Jack Daniels trinken.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#14
  Alt 6. Nov 2002, 01:36
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.481 Beiträge
 
Delphi 10.1 Berlin Professional
 
#15
  Alt 6. Nov 2002, 06:11
Möglich wäre es auch so:
Code:
for i := 0 to 9 do
begin
  if i = 4 then Continue;
  tuedies := unddas;
end;
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#16
  Alt 6. Nov 2002, 06:33
Hallo Christian,

Zitat von Christian Seehase:
Wenn es definitiv nur ein Eintrag ist, könnte man sich auch eine Form Property einrichten, die jeweils den Index des zuletzt gewählten Eintrages enthält (initial -1). Dann hätte man immer den Index des Eintrages, dass beim Wechsel des Selected Items auf 0 gesetzt werden müsste, und könnte gezielt, via ListView1.Selected.Index, den einen Eintrag ansprechen, bei dem auf 1 gesetzt werden muss. Dieser Index kommt dann in die Property.
Das könnte sich, zumindest bei vielen Werten, ausgesprochen positiv auf die Laufzeit auswirken. (im Gegensatz zum Durchlauf durch alle Items)
Das hört sich interessant an. Es ist allerdings schon möglich mehrere Einträge gleichzeitig zu löschen. Das Maximum an Einträgen ist 200. Somit ist es mit der Geschwindigkeit, nicht aoo arg schlimm, dennoch interessiert mich das. Man(n) will ja auch was neues Lernen.

@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.

Zitat von Hansa:
Warum soll das denn nicht gehen ? 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.
Irgendwie komme ich im Kopf in eine Endlosschleife.
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.
ODer? Wenn ich mir da so durchdenke, werd ich ständig verwirrt. Hmm...

Grüsse, Daniel
  Mit Zitat antworten Zitat
Benutzerbild von d3g
d3g

Registriert seit: 21. Jun 2002
602 Beiträge
 
#17
  Alt 6. Nov 2002, 14:39
Hallo Luckie,

Zitat von Luckie:
Du kannst die Zählvariable innerhalb der for-Schleife nicht verändern!
Es geht mit einem schmutzigen Trick:

Code:
[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];
MfG,
d3g
-- Crucifixion?
-- Yes.
-- Good. Out of the door, line on the left, one cross each.
  Mit Zitat antworten Zitat
Benutzerbild von Motzi
Motzi

Registriert seit: 6. Aug 2002
Ort: Wien
598 Beiträge
 
Delphi XE2 Professional
 
#18
  Alt 6. Nov 2002, 14:39
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;
Manuel Pöter
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz