Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi goto-befehl in delphi? (https://www.delphipraxis.net/73851-goto-befehl-delphi.html)

Go2EITS 26. Jul 2006 12:39

Re: goto-befehl in delphi?
 
@MKinzler
Na, das mit dem Readln und LFCR habe ich "zur Sicherheit" eingebaut, aber Zeilen die auch LFCR beinhalteten, hatte nicht geprüft. Kann ich nun weglassen.

Du hast mein GOTO-Problem elegant gelöst! Vielen Dank für das konkrete Beispiel!
CU :zwinker:

@Hallo, Himitsu
Ja, den BUG mit IF X:=A mit dem Doppelpunkt mache ich manchmal verkehrt.
Code nur aus dem Kopf heraus geschrieben. :pale:

Christian Seehase 26. Jul 2006 12:58

Re: goto-befehl in delphi?
 
Moin Zusammen,

also ich würde so etwas in eine eigene Funktion zur Gültigkeitsprüfung auslagern (z.B. IsValidRecord(Daten)).

himitsu 26. Jul 2006 13:14

Re: goto-befehl in delphi?
 
Zitat:

Zitat von Go2EITS
Na, das mit dem Readln und LFCR habe ich "zur Sicherheit" eingebaut, aber Zeilen die auch LFCR beinhalteten, hatte nicht geprüft. Kann ich nun weglassen.

Es gibt keine Zeilen, die CR, LF, oder CR-LF enthalten, denn diese Zeichen sind als Zeilentrenner bekannt.
Wenn du also eine Zeile per WriteLn schrweibst, wo diese Zeichen im String enthalten sind, dann schreibst du in Wirklichkeit mehrere Zeilen :zwinker:


Zitat:

Zitat von Go2EITS
Code nur aus dem Kopf heraus geschrieben. :pale:

es klang aber so, als wäre das Code, der per Copy&Paste hierhergelangt wäre :angel2:

Go2EITS 26. Jul 2006 13:17

Re: goto-befehl in delphi?
 
@Michael Habbe
Sorry, habe Deinen Thread irgendwie übersehen! Der Code ist super übersichtlich. Danke für Deine Mühe.
Der Code von Sakura ist ein Code vom Profi, der sofort die Schleifen erkennt aber besonders schön ist die Lösung, wie er es in eine Mengenabfrage packt.

@Seehase
Stimmt, ich packe auch solche Constructe in eine separate Function bevor es unübersichtlich wird.
Es hängt individuell davon ab, wie gut man Code lesen kann. Die Wartbarkeit und Modifzierung des Programmes ist bei dem "Outsourcen" möglicherweise besser.

@himitsu
Zitat:

es klang aber so, als wäre das Code, der per Copy&Paste hierhergelangt wäre
Du Schmeichler! :-D

Ich hätte nicht gedacht, dass das Thema GOTO so ergiebig sein kann, und wir alle etwas dazugelernt haben. Schöne Lösungen.
Das gibt ein dickes :thumb: für Euch!

himitsu 26. Jul 2006 13:29

Re: goto-befehl in delphi?
 
nicht?

also hier gab's schon massenhafte Diskursionsrunden zu diesem Thema.

Und weil ich es hier noch nicht gesagt hatte und einige immernoch meinen GOTOs gehören nicht in einen DelphiCode ... delphi ist Pascal und GOTO gehört da seit Anfang an mit dazu und manchmal is es echt nützlich ... jedenfalls würden öfters mal andere Lösungen zu Overhead und anderen Umständlichkeiten führen.

Ich würde jedenfalls eher per Exit, oder eben GOT, wenn danach noch was kommt aus mehreren Schleifchen rausspringen, als in jeder Schleife 'ne Abfrage einbauen zu müssen.
Wenn die Schleifen sehr oft durchlaufen werden, dann wäre das och noch verschwendete Rechenzeit

punkt und ende .

Go2EITS 26. Jul 2006 13:37

Re: goto-befehl in delphi?
 
@Hallo,Himitsu
So lange bin ich auch noch nicht dabei. Ich bin erst seit kurzem wieder hier aktiv.
Das kann sich wieder ändern.

Du hast wohl meinen Thread oben nicht gelesen zum Thema Schleifen oder EXIT, da gehe ich mit Dir konform. :oops: oder :pale: ist jetzt bei DIR angebracht. :)

So, nun ein praktisches Beispiel von Dir... ich warte neugierig :)
Aber vorher meinen Thread lesen. Das mit der Schleife hatten wir schon.

himitsu 26. Jul 2006 13:47

Re: goto-befehl in delphi?
 
Och, Beispiele gibt's doch schon einige? *hochschau*

Nee, es ging nicht gegen dich, aber hier waren halt welche mit drin, die meinten GOTO gehöre verbannt :shock:


Delphi-Quellcode:
Result := False;
repeat
  readln(f, Daten);
  Daten := Trim(daten);
  if (Daten <> '')                   // Leerraum
    or not (daten[1] in ['/', '#'])  // Kommentarzeile
    or (pos('C:\', daten) = 0) then  // Rootverzeichnis
  begin
    ...                              // weitere Codes zum Verarbeiten
    showmessage(Daten);              // Zum debuggen
    If pos('DEBUG', DATEN) > 0 then  // Die erste Verarbeitung...
    begin
      RESULT := TRUE; // Wir haben ja etwas gültiges gefunden...  
      ...                            // nochmehr CODE
      {1}
    end;
    ...                              // nochmals einige IF
  end;
until EOF(f);
Das Daten:=''; (am Anfang) ist nicht nötig, da's ja kurz danach per ReadLn überschrieben wird.

{1} dort könnte man z.B. ein Continue; reinmachen, wenn z.B. die nachfolgenden IFs nicht mehr ausgefühert werden sollen.
Oder ein Break;, wenn die ganze REPEAT-Schleife abgebrochen werden soll.

[add]
ach ja, da das ENDE:
direkt vor dem UNTIL steht, hättest du in deinem Code auch einfach Continue;, statt dem goto ENDE; verwenden können, wäre auf's selbe rausgekommen :zwinker:

Go2EITS 26. Jul 2006 14:13

Re: goto-befehl in delphi?
 
@Himitsu
Na, da schwirrt mir der Kopf. Ich bin für GOTO und EXIT, mein schlechtes Beispiel wurde durch sehr schöne Lösungen ersetzt. Break und Continue verwende ich nicht, dies wird mir sogar zu unübersichtlich. Wahrscheinlich, weil ich es Break und Continue nie verwende.
Ist eben Geschmackssache. Gelegentlich ereifern wir uns zu sehr über eine Sache. Ist aber nur allzu menschlich...

Ich habe mir saubere Initialisierungen generell angewöhnt, in dem Falle wäre ein Daten:=''; unnötig.

Beste Grüße! :)

himitsu 26. Jul 2006 14:21

Re: goto-befehl in delphi?
 
Ich hab mir halt in letzter Zeit angewönt nur noch das zu initialisieren/finalisieren, was wirklich nötig ist.
Sieht man vielleicht an den Ameisen ... im OnCreate wird nur noch das initialisiert, was nich 0, '', oder nil ist ... denn in diesem Fall wird ja alles schon von der Klasseninitialisierung auf 0 gesetzt.
Ist übrigens auch bei globalen Vaiablen so.
die Lokalen werden allerdings nicht (bis auf bestimmte Ausnahmen, wie z.B. dynamische Arrays und Strings) nicht automatisch initialisiert/finalisiert.


Aber um sich verschiedene Initialisierungen sparen zu können muß natürlich ein gewisses versändnis/wissen darüber existieren, was/wie/wo gemacht wird ... ansonsten ist es natürlich garnicht schlecht schlimm wenn du es dir so angewöhnt hast (auch wenn es hier mal nicht nötig as) ... vermeidet unschöne Fehler :stupid:

mkinzler 26. Jul 2006 14:24

Re: goto-befehl in delphi?
 
Zitat:

.. delphi ist Pascal und GOTO gehört da seit Anfang an mit dazu
Nope wurde erst später eingeführt.

himitsu 26. Jul 2006 14:45

Re: goto-befehl in delphi?
 
GOTO gab's schon in Pascal (selbst wenn es das dort nicht von Anfang an gab), aber in Delphi war es schon immer drin ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:53 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz