![]() |
Problem mit Assignment im For-loop
Hi Leute,
Also, bin ziemlich neu in delphi und hab ein Problem mit nem loop :oops: : Zum Problem: ich hab nen array mit n werten , die entweder '0' oder '1' sind. will jetzt die Intervalle zwischen den einzelnen Einsen ermitteln hab mir das so gedacht:
Delphi-Quellcode:
wie die letzte Zeile zeigt, will ich dann vom jeweiligen intervallende weiterzählen, um das nächste Intervall zu ermitteln.for j:= 0 to length(vza) do begin if vza[j] = 1 then begin intervallanf := j ; for i:= j to length(vza) do begin if vza[j+i]= 1 then intervallend := j+i; end; j := j+i end; bei
Delphi-Quellcode:
gibt er mir die fehlermeldung
j := j+i
Zitat:
ach so.. andere Frage.. würde die schleife
Delphi-Quellcode:
Bei der ersten eins enden oder des Intervallend erst bei der letzten Eins gesetzt werden ??
if vza[j] = 1 then begin
intervallanf := j ; for i:= j to length(vza) do begin if vza[j+i]= 1 then intervallend := j+i; THX |
Re: Problem mit Assignment im For-loop
der erste code klappt nicht, weil man eine FOR-Variable nicht schreiben darf. das zweite klappt prinizpiell, allerdings musst du da:
Delphi-Quellcode:
noch was ändern, da "vza[j+i]" ausßerhalb des arrays liegen kann, und du eine AcessViolation erhältst. zusätzlich musst du nachdem du intervallend gesetzt hast die schleife noch verlassen, damit nicht weitergesucht wird. stichwort: "break;"
for i:= j to length(vza) do begin
if vza[j+i]= 1 [...] |
Re: Problem mit Assignment im For-loop
Was für ein Intervall ? Timer ? :gruebel:
Der Hauptfehler ist aber, daß j als Schleifenzähler doppelt benutzt wird. Nehme doch einfach j1 und j2 in der Deklaration. |
Re: Problem mit Assignment im For-loop
Man darf FOR-Schleifen-Variablen nicht in der Schleife verändern.
Mach es mit einer While-Schleife:
Delphi-Quellcode:
var j: integer;
begin While j <= length(vza) do begin if XXXX then inc(j); // -> j := j + 1 als deine Veränderung der Zählvariable inc(j); // -> j := j + 1 als Zählung end; |
Re: Problem mit Assignment im For-loop
Hallo
also wenn ich das richtig sehen, dann kannst du bei a.) die Schleifenvariable nicht manuell setzen. Versuche hier repeat/until oder while! Zu b.) gibt es kein Abbruchkriterium für die Schleife. Diese würde also wohl bis zum letzten Element laufen. Allerdings gibt es da ein Problem:
Code:
vza[j+i] kann die Grenzen des Arrays sprengen und überspringt Zeichen. Die for Schleife sollte besser lauten:
for i:= j to length(vza) do begin
if vza[j+i]= 1 then intervallend := j+i; end;
Code:
Grüsse!
for i:= 1 to length(vza)-j do begin
|
Re: Problem mit Assignment im For-loop
Delphi-Quellcode:
if vza[j] = 1 then
begin intervallanf := j; for i:= j to length(vza) - j do begin if vza[j+i] = 1 then begin intervallend := j+i; break; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:30 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-2025 by Thomas Breitkreuz