Var inner- o. außerhalb Schleife deklarieren o. egal? [gelöst]
-
Hallo Gemeinschaft,
besteht zwischen den beiden folgenden Möglichkeiten ein Unterschied, oder macht der Compiler aus beiden dasselbe?
// Variante 1: for(i=0; i<ListLänge; i++) { AnsiString Eintrag= Wert[0][i]; //... ListBox1->Items->Add(Eintrag); }// Variante 2: AnsiString Eintrag; for(i=0; i<ListLänge; i++) { Eintrag= Wert[0][i]; //... ListBox1->Items->Add(Eintrag); }Und warum wird Variante 1 nicht mit Zeilenangaben angezeigt?
-
Der unterschied ist ist das bei Variante 2 "Eintrag" nach der schleife noch vorhanden ist, wärend bei Variante 1 bei jedem durchlauf "Eintrag" im speicher neu angelegt wird;
-
v2 ist "billiger", weil nicht ständig eine neue AnsiString-Instanz erstellt und zerstört werden muss. Wenn Wert[][] ein AnsiString-Array ist, dann wäre das hier noch "billiger":
for(i=0; i<ListLänge; i++) ListBox1->Items->Add(Wert[0][i]);Zeilennummern gibt es erst ab 8 Zeilen.
-
Ok, Danke Ihr beiden, so hatte ich mir das auch gedacht.

Meine Idee war nur, dass der Copiler mitbekommt dass Variante 1 blöd ist und es optimiert. Das hätte für mich einfach die Einsparung einer Codezeile bedeutet.

@Jansen: Ja, es ist eine AnsiString-Array, aber ich bearbeite "Eintrag" zwischendurch noch.
Zeilennummern erst ab 8? Wer denkt sich sowas aus??? Aber gut zu wissen
