Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi for I := 1 to SL.Count do; oder for I := 0 to SL.Count -1 do (https://www.delphipraxis.net/41014-i-%3D-1-sl-count-do%3B-oder-i-%3D-0-sl-count-1-do.html)

Die Muhkuh 24. Feb 2005 17:14


for I := 1 to SL.Count do; oder for I := 0 to SL.Count -1 do
 
Hi,

mein Freund hat mir gerade folgenden Code gegeben:

Delphi-Quellcode:
function Anzahl : Integer;
var loc : TStringlist;
    i : Integer;
begin
  loc := TStringlist.Create;
  try
    loc.LoadFromFile('dc.loc');
    SetLength(Datei,Loc.Count);
    for i := 1 to Loc.Count do begin
     Datei[i] := TDatei.Create;
    end;

    Result := loc.Count;
  finally
    loc.Free;
  end;
end;
ich hab zu ihm gesagt, das da nen Bock drinne ist. Es müsste nämlich for I := 0 to SL.Count - 1 do heißen.

Er sagte mir dazu noch dies:
Zitat:

Count gibt die Anzahl der reihen
So und ich will soviele dateien erzeugen wie es Zeilen gibt ...

Count fängt ist bei einer Zeile = 1
Count ist bei zwei Zeilen = 2
usw...
Jede Zeile ist eine Datei.
Ich sagte ihm das es falsch ist.

Zeile 1 = Count 0;
Zeile 2 = Count 1;

Jetzt wollte ich wissen, was nun richtig?

Neutral General 24. Feb 2005 17:15

Re: for I := 1 to SL.Count do; oder for I := 0 to SL.Count -
 
Bei einer Zeile ist Count = 1 aber der INDEX der ersten Zeile ist 0 !!

PS : Der Freund bin ich :mrgreen:

Luckie 24. Feb 2005 17:16

Re: for I := 1 to SL.Count do; oder for I := 0 to SL.Count -
 
Die erste Zeile einer Stringliste hat immer den Index 0. Deshalb darf die Schleife auch nur bis Count-1 laufen.

Neutral General 24. Feb 2005 17:18

Re: for I := 1 to SL.Count do; oder for I := 0 to SL.Count -
 
@ Luckie : Du verstehst nicht genau worum es geht.
Es sollen soviele TDatei erstellt werden wie die Datei Zeilen hat.

Bei zwei Zeile ist Count = 2
also

Delphi-Quellcode:
for i:= 1 to 2 do begin

end;
Und das erzeugt 2 TDatei !!

Aenogym 24. Feb 2005 17:20

Re: for I := 1 to SL.Count do; oder for I := 0 to SL.Count -
 
NeutralGeneral liegt richtig.

Aenogym

MathiasSimmack 24. Feb 2005 17:23

Re: for I := 1 to SL.Count do; oder for I := 0 to SL.Count -
 
Ist
Delphi-Quellcode:
 SetLength(Datei,Loc.Count);
aber nicht ein dynamisches Array, das in dem Fall bei Null beginnt? :gruebel: Wenn Ja, dann kann die Schleife auch wie gehabt von Null bis Count-1 laufen.

jbg 24. Feb 2005 17:24

Re: for I := 1 to SL.Count do; oder for I := 0 to SL.Count -
 
Zitat:

Zitat von Neutral General
@ Luckie : Du verstehst nicht genau worum es geht.
Es sollen soviele TDatei erstellt werden wie die Datei Zeilen hat.

Schon mal die Null mitgezählt?


(0, 1) sind auch zwei "Dateien".

Die Muhkuh 24. Feb 2005 17:24

Re: for I := 1 to SL.Count do; oder for I := 0 to SL.Count -
 
Hi,

aber in der StringList wird dann der erste Eintrag übersprungen!

Test-Code:

Delphi-Quellcode:
var
  I: Integer;
  SL: TStringList;
begin
  SL := TStringList.Create;

  try
    SL.Add('0');
    SL.Add('1');
    SL.Add('2');

    for I := 1 to SL.Count do
    begin
      ShowMessage(SL.Strings[I]);
    end;
  finally
    SL.Free;
  end;
end;
Fazit: Es werden nur 1 und 2 angezeigt.

Da in der dc.loc Dateien stehen:

URL;MD5;Wohin

sollte ja auch die erste Datei ausgelesen werden und nicht "vergessen" werden.

Matze 24. Feb 2005 17:27

Re: for I := 1 to SL.Count do; oder for I := 0 to SL.Count -
 
Zitat:

Zitat von Neutral General
@ Luckie : Du verstehst nicht genau worum es geht.

Ich hätte genau die gleiche Antwort gegeben wie Luckie. Die Schleife muss von 0 bis Count-1 laufen, da die erste zeile den Index 0 besitzt.

ibp 24. Feb 2005 17:28

Re: for I := 1 to SL.Count do; oder for I := 0 to SL.Count -
 
Delphi-Quellcode:
var
  I: Integer;
  SL: TStringList;
begin
  SL := TStringList.Create;

  try
    SL.Add('0');
    SL.Add('1');
    SL.Add('2');

    for I := 0 to SL.Count-1 do
    begin
      ShowMessage(SL.Strings[I]);
    end;
  finally
    SL.Free;
  end;
end;
Fazit: Es werden 0, 1 und 2 angezeigt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:08 Uhr.
Seite 1 von 3  1 23      

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 by Thomas Breitkreuz