AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Objekte zur Laufzeit erzeugen

Ein Thema von Luki206 · begonnen am 18. Mai 2014 · letzter Beitrag vom 24. Jun 2014
Antwort Antwort
Seite 5 von 9   « Erste     345 67     Letzte »    
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#41

AW: Objekte zur Laufzeit erzeugen

  Alt 20. Mai 2014, 07:22
So dann will ich auch noch mal einen zum Besten (bzgl. der Formatierung) geben.

3 Varianten
Delphi-Quellcode:
procedure Foo1;
begin
if Voraussetzung then begin
MeinCode1;
MeinCode2;
end else begin
MeinCode2;
MeinCode1;
end;
end;

procedure Foo2;
begin
  if Voraussetzung then
  begin
    MeinCode1;
    MeinCode2;
  end
  else
  begin
    MeinCode2;
    MeinCode1;
  end;
end;

procedure Foo3;
begin
  if Voraussetzung
  then
    begin
      MeinCode1;
      MeinCode2;
    end
  else
    begin
      MeinCode2;
      MeinCode1;
    end;
end;
und was CnPack daraus macht
cnpack_format.png
Ja, aus dem Grund nehme ich Variante 3
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.764 Beiträge
 
Delphi 11 Alexandria
 
#42

AW: Objekte zur Laufzeit erzeugen

  Alt 20. Mai 2014, 08:23
Das versteh ich nicht, guter Sir. Warum Variante 3? Die ist... nicht schön. then in einer eigenen Zeile? Also wirklich.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#43

AW: Objekte zur Laufzeit erzeugen

  Alt 20. Mai 2014, 08:43
Das versteh ich nicht, guter Sir. Warum Variante 3? Die ist... nicht schön. then in einer eigenen Zeile? Also wirklich.

Sherlock
Macht nichts, denn schön liegt im Auge des Betrachters

Für mich zählt nur die Lesbarkeit und damit ist es für mich einfacher (damit schneller) die Struktur zu erfassen.
Sobald die Bedingungen etwas umfangreicher werden (ab einer gewissen Schmerzgrenze lager ich aber Teile in Funktionen aus), dann schreibe ich das sogar so:
Delphi-Quellcode:
if //
  Bedingung1 or //
  Bedingung2 or //
  Bedingung3 and Bedingung4 //
then
  Foo
else
  Bar;
Dein Vorschlag wäre ja dann so
Delphi-Quellcode:
if Bedingung1 or Bedingung2 or Bedingung3 and Bedingung4 then
  Foo
else
  Bar;
Und wenn der automatische Zeilenumbruch (Codeformatierung) zuschlägt, dann wird es ganz doof
Delphi-Quellcode:
if Bedingung1 or Bedingung2 or
  Bedingung3 and Bedingung4 then
  Foo
else
  Bar;
Jetzt ist nicht auf einen kurzen Blick erkennbar, was wohin gehört. Bei meiner Variante sehe ich die einzelnen Teile sofort.

Und selbst diese Variante (ohne Zeilenkommentare) ist besser lesbar
Delphi-Quellcode:
if Bedingung1 or Bedingung2 or
  Bedingung3 and Bedingung4
then
  Foo
else
  Bar;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#44

AW: Objekte zur Laufzeit erzeugen

  Alt 20. Mai 2014, 13:37
@Luki206
Nun da greift wer ins Klo. Mit anderen worten, ein Zeiger zeigt in die Botanik und nict mehr auf Speicher der für Deine Anwendung verfügbar ist.

@all
Heute hab ich da was über Haarspalterei gelesen...
Manchmal kommt's darauf an, da ist auch so etwas gut brauchbar:
Delphi-Quellcode:
If bedingung1 then... else
If Bedingung2 then... else
If Bedingung3 then... else
..
If Bedingung99 then
else showessage('Deine Daten sind Schrott');
und ebenso
Delphi-Quellcode:
if (Bedingung1 or
    Bedingung2 or
   (Bedingung3 and Bedingung4)or
    Bedingung5 then ......
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#45

AW: Objekte zur Laufzeit erzeugen

  Alt 20. Mai 2014, 15:26
Also richtig soll es angeblich so sein:
Delphi-Quellcode:
  if a = b then
    begin
    a := 1;
    b := 2;
    end
  else
    begin
    a := 2;
    b := 1;
    end;
Persönlich mache ich es heute so (also fast richtig ):
Delphi-Quellcode:
  if a = b then
  begin
    a := 1;
    b := 2;
  end
  else
  begin
    a := 2;
    b := 1;
  end;
Das ist eigentlich Quatsch, denn else gehört in die gleiche Ebene wie if:
Delphi-Quellcode:
  if a = b then
  begin
    a := 1;
    b := 2;
  end
    else
  begin
    a := 2;
    b := 1;
  end;
Früher machte ich es immer so, aber zumindest begin nach then, korrigiere aber inzwischen jeden Code damit:
Delphi-Quellcode:
  if a = b then begin
    a := 1;
    b := 2;
  end else begin
    a := 2;
    b := 1;
  end;
Man spart sich zwar mindestens eine Zeile, muss aber immer erst zwei mal gucken um zu sehen, dass die nächsten zwei Zeilen einen Block bilden. Die Übersichtlichkeit ist nicht so flüssig.

Furchtbar sind natürlich die ganz coolen Formen der Formatierung:
Delphi-Quellcode:
  if a = b then
                begin
    a := 1;
    b := 2;
                end
    else
                begin
    a := 2;
    b := 1;
                end;
Das tue ich mir inzwischen fast gar nicht mehr an. Postet es einer so, ignoriere ich die Frage:
Delphi-Quellcode:
if a=b then
begin
a:=1;
b:=2;
end
else
begin
a:=2;
b:=1;
end;
Da muss ich zu sehr im Kopf den Code entwirren.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#46

AW: Objekte zur Laufzeit erzeugen

  Alt 20. Mai 2014, 15:34
Also richtig soll es angeblich so sein:
Delphi-Quellcode:
  if a = b then
    begin
    a := 1;
    b := 2;
    end
  else
    begin
    a := 2;
    b := 1;
    end;
Quelle? Der (uralte) Style Guide sagt da etwas anderes.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#47

AW: Objekte zur Laufzeit erzeugen

  Alt 20. Mai 2014, 16:37
Wenn ich für alles was ich im Leben sagte einen Quellennachweis liefen müsste...

Ich weiß nicht mehr wo ich es gesehen habe, ich habe es aber paar mal gesehen und es waren in der Regel Seiten von Unis. Auch sahen die Seiten in der Regel schön "klassisch" aus, also HTML pur, wie in den guten alten Zeiten Anfang 90. Womit ich also nicht behaupte, dass das neu ist, muss aber auch nicht alt sein. Ich gucke mal in meinen Lesezeichen ob ich da was finde.

Andererseits ergibt das zum Teil einen Sinn.
Delphi-Quellcode:
  if a = b then
    ...
  else
    ...
Else ist ein Teil der If-Anweisung, gehört also in die gleiche Ebene, nicht eingerückt.

Begin und End bilden einen Block. Somit stellt sich die Frage wohn damit?
Delphi-Quellcode:
  if a = b then
    a := 1
  else
    b := 2;
Das ist alles eine einzige Anweisung, auch wenn es über vier Zeilen verteilt ist. Woran erkennt man das? Spätestens daran, dass es nur ein abschließendes Semikolon am Ende gibt. Geht also auch so:
Delphi-Quellcode:
  if a = b then a := 1 else b := 2;
  ...
Wenn ich nun mehr als eine Zeile benötige, brauche ich einen Block.
Delphi-Quellcode:
  if a = b then
  begin
    a := 1;
    b := 2
  end
  else
    b := 2;
Und nun stellt sich die Frage zu was gehört Begin und End? Ist es ein Teil des Blocks selbst, dann muss man es so schreiben:
Delphi-Quellcode:
  if a = b then
    begin
    a := 1;
    b := 2
    end
  else
    b := 2;
Oder ist es ein Teil der If-Anweisung, dann die vorherige Variante.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#48

AW: Objekte zur Laufzeit erzeugen

  Alt 20. Mai 2014, 17:18
Delphi-Quellcode:
if a = b then
  begin
    a := 1;
    b := 2;
  end
else
  b := 2;
So würde ich es schreiben. Und Behauptungen, die man nicht belegen kann, sind eben nur Behauptungen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#49

AW: Objekte zur Laufzeit erzeugen

  Alt 20. Mai 2014, 17:21
Wenn else ein Teil der if -Anweisung ist und deswegen in die gleiche Ebene sollte wie das if , dann gilt das auch für then .

Sag ich doch die ganze Zeit
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#50

AW: Objekte zur Laufzeit erzeugen

  Alt 20. Mai 2014, 17:24
Jetzt sind wir aber mittlerweile weit ab vom Thema, oder?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Alt 20. Mai 2014, 17:37     Erstellt von DateTimeError
Dieser Beitrag wurde von TBx gelöscht. - Grund: Bitte keine Beleidigungen
Antwort Antwort
Seite 5 von 9   « Erste     345 67     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:47 Uhr.
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