@pesi ohne große Ahnung vom Programmieren zu haben, ist die Delphi-Schleife
IMHO einfacher,
denn da gibt es nur FROM und TO, während man in C die Initialisierung, die Abbruchbedingung und die Inkrementierung erstmal kappieren muß.
Dafür kann man in C die For-Schleife nativ auch wesentlich komplexer benutzen.
https://www.w3schools.com/cpp/cpp_for_loop.asp
http://docwiki.embarcadero.com/RADSt...For_Statements
Und mal ganz im Ernst ... ohne genauere Vorkentniss, weiß man bein C++ hier nicht was wo rein muß.
Code:
for (statement 1; statement 2; statement 3) {
Delphi-Quellcode:
for counter := initialValue to finalValue do
for counter := initialValue downto finalValue do
Und ich hab schon viele Wikis/Tutorials/Hilfen gesehen, wo es so "unbezeichnend" dokumentiert ist und man erst das Kleingedruckte genau lesen muss.
Auch wenn es anders ginge.
http://docwiki.embarcadero.com/RADSt.../For_(C%2B%2B)
https://en.cppreference.com/w/cpp/language/for
In C ist der For-Loop quasi nur eine Kurzschreibweise (Makro) für eine While-Schleife inkl. Initialisierung und Inkrementierung.
In Delphi ist es halt was Eigenes. (auch wenn es intern auch fast wie 'ne WHILE arbeitet, inkl. einer Temp-Variable für das Ende)
Leider ohne das STEP, was man aus BASIC und anderen Pascal-Dialekten kennt.
Da das Ende oft mit = arbeitet, gäbe es Probleme, wenn man innerhalb der Schleife den Zähler ändert. (was möglich ist, aber dann den Abbruch verhindern kann)
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
i: Integer;
begin
//for i := 0 to 8 step 2 do begin
for i := 0 to 8 do begin // 0 2 4 8 (Abbruch bei 9, aber da sie übersprungen wurde) 10 12 14 ... = Endlosschleife, da bei 32 Bit es wieder zur 0 zurückkehrt
if i > 30 then
Break; // manueller Sicherheitsabbruch
Memo1.Lines.Add(IntToStr(i));
Application.ProcessMessages;
Inc(PInteger(@i)^); // STEP 2
end;
Hier kann man sich mit dem FOR-IN behelfen.
Delphi-Quellcode:
// wenn GenerateSeries(From, To, Step) die Zahlenfolge als Enumerator oder dynamisches Array liefert
for i in GenerateSeries(0, 8, 2) do