| Autor |
Beitrag |
Mühli
Hält's aus hier
Beiträge: 4
|
Verfasst: Do 10.02.11 15:57
Hallo! Ich bin noch ein ziemlicher Anfänger beim Programmiern mit Delphi und ich hab jetzt ein Problem. Ich hab ein Array dass von 0-99 läuft. die Variable auf der ich es speichere ist x und diese wird mit jedem Klick auf den speichern Button um 1 erhöht und ins Array gespeichert. So weit so gut. Doch jetzt möchte ich keine doppelten Namen, etc. also habe ich eine y Variable erstellt. Was muss ich jetzt machen um mit der y Variable alle Array Felder also Array[0-99] auf diesen Namen zu überprüfen. Welche Schleife muss ich verwenden? Moderiert von Narses: Topic aus VCL (Visual Component Library) verschoben am Do 10.02.2011 um 16:48
|
|
shadow123
Hält's aus hier
Beiträge: 6
Erhaltene Danke: 1
|
Verfasst: Do 10.02.11 16:17
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| found := false; for i := 0 to 99 do begin if arr[i] = y then begin found := true; break; end; end;
if not found then /* füge hinzu */ |
Meinst du sowas?
Für diesen Beitrag haben gedankt: Mühli
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: Do 10.02.11 16:24
dafür verwendet man ne while-schleife, da kann man das found in die abbruch-bedingung schreiben und braucht ned so hässlich mit einem unsauberen break hantieren.
lg elundril
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
Für diesen Beitrag haben gedankt: Tankard
|
|
Mühli 
Hält's aus hier
Beiträge: 4
|
Verfasst: Do 10.02.11 17:51
|
|
shadow123
Hält's aus hier
Beiträge: 6
Erhaltene Danke: 1
|
Verfasst: Do 10.02.11 18:29
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: Do 10.02.11 18:32
kommt nicht aus selbe hinaus. bei der schleife weiß ich genau wann die terminieren könnte ohne mir den schleifenrumpf einmal angesehen zu haben:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| i := 0; found := false; while (i < 100) AND NOT found do begin if arr[i] = y then found := true; inc(i); end; |
lg elundril
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
Für diesen Beitrag haben gedankt: Tankard
|
|
Tankard
      

Beiträge: 217
Erhaltene Danke: 96
|
Verfasst: Do 10.02.11 18:35
|
|
Flamefire
      
Beiträge: 1207
Erhaltene Danke: 31
Win 10
Delphi 2009 Pro, C++ (Visual Studio)
|
Verfasst: Do 10.02.11 18:45
@elundril: außerdem hat die for-schleife einen performance-vorteil
einerseits prüft sie ne bedingung je durchlauf (-->bis zu 100 mal in dem fall) weniger andrerseits lässt die sich vom compiler besser optimieren.
macht also schon sinn und wird auch meist so gemacht.
|
|
Tankard
      

Beiträge: 217
Erhaltene Danke: 96
|
Verfasst: Do 10.02.11 18:48
Flamefire hat folgendes geschrieben : | @elundril: außerdem hat die for-schleife einen performance-vorteil
einerseits prüft sie ne bedingung je durchlauf (-->bis zu 100 mal in dem fall) weniger andrerseits lässt die sich vom compiler besser optimieren.
macht also schon sinn und wird auch meist so gemacht. |
du programmiest oefters in c nech. die machen sowas. ich finde lesbarkeit des codes wichtiger als preformance. solche sachen mach ich nur wenn die geschwindigkeit wichtg ist.
aber bei normalen anwendungen hat man das problem nicht. man wartet eher auf den user, als anders rum.
|
|
Flamefire
      
Beiträge: 1207
Erhaltene Danke: 31
Win 10
Delphi 2009 Pro, C++ (Visual Studio)
|
Verfasst: Do 10.02.11 19:14
nö. hauptsächlich delphi. c kann ich nur theoretisch gut. um wirklich gut zu sein müsste man es mehr machen.
man findet aber for..to..break konstrukte wirklich häufig. (auch in den standart-datein von delphi)
klar wartet man meist auf den user. aber lass das mal in ner liste sein, davon mehrere und das noch verschachtelt. dann wartet der user auf das programm. und ab da wirds mist
und bei kleinen schleifen wie der obigen ist das auch noch ok. da leidet die lesbarkeit (m.M.n.) nicht.
|
|
jaenicke
      
Beiträge: 19345
Erhaltene Danke: 1753
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 10.02.11 20:08
Flamefire hat folgendes geschrieben : | | und bei kleinen schleifen wie der obigen ist das auch noch ok. da leidet die lesbarkeit (m.M.n.) nicht. |
Vorausgesetzt man macht die Methoden nicht zu lang. Wenn da eine Methode IndexOf ist, die aus praktisch nur der Schleife besteht, ist das überhaupt kein Problem.
Wenn man sowas in eine 1000 Zeilen Methode in die Mitte packt, ist es mit der Lesbarkeit vorbei... (aus beiden Gründen  )
|
|
shadow123
Hält's aus hier
Beiträge: 6
Erhaltene Danke: 1
|
Verfasst: Do 10.02.11 21:05
|
|
Marc.
      
Beiträge: 1876
Erhaltene Danke: 129
Win 8.1, Xubuntu 15.10
|
Verfasst: Do 10.02.11 21:31
Für diesen Beitrag haben gedankt: elundril, jaenicke
|
|
Pr0g3r
      
Beiträge: 44
Win XP
Turbo Pascal, Delphi 5&7, Ti-Basic
|
Verfasst: Do 10.02.11 21:48
man kann seinen tag auch sinnvoller gestalten als über so was zu diskutieren 
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: Do 10.02.11 22:22
Wenn jeder sich das gedacht hätte, dann würden wir eventuell noch in Höhlen wohnen und gerade mal halbwegs das Feuer beherrschen.
lg elundril
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|
jaenicke
      
Beiträge: 19345
Erhaltene Danke: 1753
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 10.02.11 22:44
Wo kämen wir hin, wenn alle sagten "wo kämen wir hin" und keiner ginge um nachzuschauen? 
|
|