![]() |
For oder While?
welche der beiden schleifen würdet ihr benutzen?
while schleife:
Delphi-Quellcode:
for schleife:
function TChans.ChannelExists(ChannelName: string): boolean;
var i: integer; begin result := false; if ChannelName <> '' then begin i := Low(FChannels); while (not(result)) or (i <= High(FChannels)) do begin if CompareText(FChannels[i].Name, ChannelName) = 0 then result := true; inc(i); end; end; end;
Delphi-Quellcode:
die while schleife prüft jedes mal aufs neue ihre Bedingung, die for schleife hingegen wird mit einem break/exit beendet... hab gehört das for schleifen perfformanter sind, break und exit aber wiederum ein schlechter stil sind.... also was sollte ich hier nehmen?
function TChans.ChannelExists(ChannelName: string): boolean;
var i: integer; begin result := false; if ChannelName <> '' then begin for i := Low(FChannels) to High(FChannels)) do if CompareText(FChannels[i].Name, ChannelName) = 0 then begin result := true; break; // bzw exit; end; end; end; |
Re: For oder While?
Pinzipiell sind while rsp. repeat Schleifen flexibler in der Handhabung, da du hier zudem die Möglichkeit, deine Zählvariable selbst zu ändern. In einer For-Schleife wird diese immer automatisch um einen festen Wert erhöht oder erniedrigt..
Das Ändern der Zählvariable ist aber in seltenen Fällen nur notwendig, von daher ists egal ob For- oder While-Schleife. Gruß |
Re: For oder While?
hoi jelly,
es geht mir bei der for-schleife darum ob das break/exit nicht "schlecht" ist. Würde es was bringen wenn ich bei der while schleife eine extra variable anlege die den wert für "High(FChannels)) " enthält, so das die funktion high() nicht jedesmal neu aufgerufen wird? |
Re: For oder While?
imho wird die nur einmal aufgerufen
|
Re: For oder While?
nein, wird jedes mal neu geprüft, sonst würde das ganze gar nicht funktionieren weil "i" dann ja immer den gleichen wert hätte
|
Re: For oder While?
da müsste man mal den asm code prüfen ob das so ist...ich glaube nicht
|
Re: For oder While?
das ist in jeder while schleife so das ihre bedingung bei jedem durchlauf geprüft würd, anders würde die schleife keinen sinn machen ;)
bei der for schleife wird es (in delphi, nicht in C) dagegen nur 1mal geprüft. |
Re: For oder While?
oops :duck: habe die for-schleife gemeint, wer lesen kann ist klar im vorteil.
stimmt natürlich dass bei einer while oder repeat schliefe jedesmal geprüft wird und daher macht es sinn, die bedingungen durch eine variable festzulegen, damit sparst du dir natürlich einen etwaigen procedureaufruf |
Re: For oder While?
:thumb: jo stimmt
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:42 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