Autor Beitrag
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 24.07.10 08:55 
user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
IMHO ist eine der wenigen Ausnahmen die klassische IndexOf-Methode:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
function IndexOf(const Needle: String; Haystack: TStrings): Integer;
begin
  for Result := 0 to Haystack.Count-1 do
    if (Haystack[Result] = Needle) then
      Exit;
  Result := -1;
end;
Wobei genau genommen der Wert der Schleifenvariablen nach der Schleife nicht definiert ist. Dass hier vermutlich keine Compilerwarnung kommt, liegt schlicht daran, dass nicht mehr lesend auf Result zugegriffen wird.
Und dass Delphi da nicht aufräumt, liegt daran, dass Result in EAX liegt und EAX als Ergebnisregister nicht aufgeräumt werden muss. Deshalb klappt es, aber theoretisch kann sich die Implementierung von Schleifen auch ändern.

user profile iconNersgatt hat folgendes geschrieben Zum zitierten Posting springen:
Sowas mache ich persönlich immer mit einer While-Schleife:
Also wenn du schon auf die Lesbarkeit und Wartbarkeit anspielst, dann solltest du es nicht noch extra kryptisch machen... Dann lieber richtig:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
function IndexOf(const Needle: String; Haystack: TStrings): Integer;
var
  i: Integer;
  Found: Boolean;
begin
  i := 0;
  Found := False;
  while (i <= Haystack.Count - 1and not Found do
  begin
    Found := Haystack[i] = Needle;
    if not Found then
      Inc(i);
  end;
  if Found then
    Result := i
  else
    Result := -1;
end;
Letztlich finde ich es viel wichtiger, dass man den Quelltext ordentlich formatiert (ich hasse es, wenn jemand das Exit oder andere Befehle irgendwo hinten in der Zeile versteckt... :autsch:) und sprechende Bezeichner wählt. Dann überblickt jeder gute Programmierer auch die Variante mit Exit gut.

Ich selbst mache