Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Klatsch und Tratsch (https://www.delphipraxis.net/34-klatsch-und-tratsch/)
-   -   Gibt es Hexen? (https://www.delphipraxis.net/185090-gibt-es-hexen.html)

idefix2 14. Mai 2015 13:59

Gibt es Hexen?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Wie kommt das Programm da in den then-Zweig hinein?
Das gibt es doch überhaupt nicht :?:

Habt ihr eine Idee, wo ich da nach dem Fehler suchen könnte?

idefix2 14. Mai 2015 14:16

AW: Gibt es Hexen?
 
Problem gelöst - Das Verhalten des Delphi Debuggers ist da ein ganz klein wenig verwirrend: er führt das, was im then Zweig steht, gar nicht aus, tut aber so, als wäre das, was im THEN Zweig steht, die aktuelle Anweisung - der Programmfehler war an einer anderen Stelle.

Popov 14. Mai 2015 14:21

AW: Gibt es Hexen?
 
Mach es so, ist besser:
Delphi-Quellcode:
  if ... then
  begin
    if ... then
      exit;
  end;
Alles andere sind Modeerscheinungen, beim debugen rächt sich das.

Dejan Vu 14. Mai 2015 15:36

AW: Gibt es Hexen?
 
Oder einfach so (das ist sogar nicht nur besser, sondern besserer!):
Delphi-Quellcode:
if ... then
  if ... then
Alles andere sind lächerliche Versuche der Tastaturmafia, uns zu überflüssigem Tippen zu verleiten, um den Tastaturumsatz anzukurbeln.

Mavarik 14. Mai 2015 16:21

AW: Gibt es Hexen?
 
Auch wieder ein super Thread-Titel

Popov 14. Mai 2015 16:28

AW: Gibt es Hexen?
 
Damit glaubt jeder wieder an Hexen:
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  TTimer(Sender).Interval := 10;
  Left := Left + (Random(5) - 2);
  Top := Top + (Random(5) - 2);
end;

idefix2 14. Mai 2015 21:38

AW: Gibt es Hexen?
 
@Popov
Es ist völlig egal, wie du es schreibst, der Debugger springt immer in die Zeile mit dem Exit, auch wenn die Bedingung nicht erfüllt ist. Ich habe jetzt extra alle Zeilenumbruch-Varianten ausprobiert.


@Dejan Vu
Wenn das erste if einen else Zweig hat und das zweite nicht, geht es ohne begin ... end gar nicht.

himitsu 14. Mai 2015 22:10

AW: Gibt es Hexen?
 
Man könnte ja mal im Debugger schauen, was für ein Code an der Stelle liegt. :stupid:

Popov 14. Mai 2015 22:55

AW: Gibt es Hexen?
 
Zitat:

Zitat von idefix2 (Beitrag 1301600)
@Popov
Es ist völlig egal, wie du es schreibst, der Debugger springt immer in die Zeile mit dem Exit, auch wenn die Bedingung nicht erfüllt ist. Ich habe jetzt extra alle Zeilenumbruch-Varianten ausprobiert.

Ob es hier so ist oder nicht, ist irrelevant. Sowas rächt sich gelegentlich.

Was den Vergleich angeht, so konnte ich dein Problem ein mal reproduzieren. Ich hab es genauso wie du geschrieben, nur wusste ich nicht ob er nun in der then oder exit Ziele ist. Also habe ich die Ausführung noch mal unterbrochen, es auf zwei Zeilen verteilt und wieder gestartet. Das zweite mal hat es nicht geklappt. Selbst nachdem ich es wieder rückgängig gemacht habe. Ich hab es dann noch ein Dutzend mal gestartet, es ging jedes mal durch.

Dejan Vu 15. Mai 2015 06:12

AW: Gibt es Hexen?
 
Zitat:

Zitat von idefix2 (Beitrag 1301600)
@Dejan Vu
Wenn das erste if einen else Zweig hat und das zweite nicht, geht es ohne begin ... end gar nicht.

Klar geht das
Delphi-Quellcode:
if foo then
  if bar then
    doBar()
  else
else
  doFoo();
Nicht, damit das hier zu einem Glaubenskrieg für/wider überflüssiger Umschließung mit begin/end führt. Was für den Einzelnen besser lesbar ist, steht auf einem anderen Blatt. Nur ein 'begin/end' für eine Zeile einzuführen halte ich und ca. 50% der Entwickler für überflüssig und die anderen 50% nicht. Beide haben ihre Gründe. Man gewöhnt sich an beide Lesarten.

himitsu 15. Mai 2015 09:26

AW: Gibt es Hexen?
 
Zitat:

Zitat von Dejan Vu (Beitrag 1301615)
Klar geht das
Delphi-Quellcode:
if foo then
  if bar then
    doBar()
  else
else
  doFoo();

Jupp, es geht alles, oder man dreht es um

Delphi-Quellcode:
if not foo then
  doFoo()
else
  if bar then
    doBar();

if not foo then
  doFoo()
else if bar then
  doBar();

uvm.
Nicht, daß sonst noch jemand auf eine andere Idee kommt.
Delphi-Quellcode:
if foo then
else
  doFoo();
OK, zumindestens ist der Code nicht falsch. :stupid:


PS: Ich hatte vor dem ersten Öffnen an HEXen gedacht.

Popov 15. Mai 2015 09:28

AW: Gibt es Hexen?
 
@Dejan Vu

Wenn du dich auf das obere Beispiel beziehst:
Delphi-Quellcode:
  if ... then
  begin
    if ... then
      exit;
  end;
es entspricht dem Beispiel aus #1 von idefix2. Nur die Schreibweise, bzw. Verteilung auf einzelnen Zeilen ist anders. Ob man es also wie oben oder so wie hier schreibt
Delphi-Quellcode:
  if ... then
    if ... then
      exit;
ist schnuppe. Die Lesbarkeit die ich meinte kommt nicht von vielen begin-end-Blöcken, da hast du mich anscheinend missverstanden, sondern von eigenen Zeilen für eine Anweisung.

Wobei man wiederum hier aufpassen sollte:
Delphi-Quellcode:
if ... then
  if ... then
    exit
  else
    nixda;
wenn man das meint:
Delphi-Quellcode:
if ... then
  if ... then
    exit;
else
  nixda;
Wobei das Delphi nicht schlucken wird, da es das nicht versteht.
Delphi-Quellcode:
if ... then
begin
  if ... then
    exit;
end
else
  nixda;
Das wird klappen. Aber aus gründen der Lesbarkeit mache ich auch das:
Delphi-Quellcode:
if ... then
begin
  if ... then
    exit
  else
    nixda;
end;
nicht weil es besser ist, aber so erkenne ich 0,2 Sekunden schneller wie das Programm gedacht ist. Aber jedem das Seine.

Sir Rufo 15. Mai 2015 10:19

AW: Gibt es Hexen?
 
Bei diesen Konstrukten ist es immer hilfreich den Code-Formatter einzusetzen (ist bei mir quasi schon ein Reflex) inkl. dem CnPack damit einem "falsche" Konstrukte sofort ins Auge springen.

Denn die scheren sich einen Dreck um das was man gemeint hat, sondern zeigen das, was man geschrieben hat.

IdR benutze ich aber auch ein zusätzlichen
Delphi-Quellcode:
begin end
um die Zusammengehörigkeit der Code-Blöcke eindeutig festzulegen.

Bjoerk 15. Mai 2015 10:40

AW: Gibt es Hexen?
 
Auch immer nett: :)

Delphi-Quellcode:
if .. then
  if .. then
    ..
else
  .. ;

idefix2 15. Mai 2015 10:58

AW: Gibt es Hexen?
 
Zitat:

Zitat von Popov (Beitrag 1301608)
Ob es hier so ist oder nicht, ist irrelevant. Sowas rächt sich gelegentlich.

Es ist irgendwie lustig, wie hier immer wieder Glaubenskriege um die "richtige" Formatierung von programmcode begonnen werden.
Ich persönlich halte die Programmformatierung, die aktuell in Mode ist, und die auch von den Codeformattern unterstützt wird, für extrem unübersichtlich, aber jedem das Seine.

Sir Rufo 15. Mai 2015 11:12

AW: Gibt es Hexen?
 
Zitat:

Zitat von idefix2 (Beitrag 1301637)
Zitat:

Zitat von Popov (Beitrag 1301608)
Ob es hier so ist oder nicht, ist irrelevant. Sowas rächt sich gelegentlich.

Es ist irgendwie lustig, wie hier immer wieder Glaubenskriege um die "richtige" Formatierung von programmcode begonnen werden.
Ich persönlich halte die Programmformatierung, die aktuell in Mode ist, und die auch von den Codeformattern unterstützt wird, für extrem unübersichtlich, aber jedem das Seine.

Über Formatierungen kann man sich streiten, weil Geschmackssache, aber wenn aufgrund der (Nicht- oder Falsch-)Formatierung sich Fehler in den Code schleichen oder die aktuelle Zeile vom Debugger mehrdeutig ist
Delphi-Quellcode:
// Ja, wo simma denn?
if ... then begin ... end else begin ... end;
und darum nicht den Fehler finden kann dann gibt es eben was an die Backen.

So einfach ist das dann. Wie jemand den Code formatiert ist mir also herzlich egal. Ich drücke einmal auf STRG-D und schon ist es so, wie ich das will.

Der schöne Günther 15. Mai 2015 11:13

AW: Gibt es Hexen?
 
http://xkcd.com/1513/

Ich verstehe die Diskussion auch nicht. Entweder gibt es Styleguides im Unternehmen. Oder man drückt nach dem Öffnen seinen Hotkey fürs Formatieren und hat den Code so wie man es gewöhnt ist.

Und ob es nun Hexen gibt oder nicht ist auch noch nicht abschließend geklärt.

Popov 15. Mai 2015 11:40

AW: Gibt es Hexen?
 
Zitat:

Zitat von idefix2 (Beitrag 1301637)
Es ist irgendwie lustig, wie hier immer wieder Glaubenskriege um die "richtige" Formatierung von programmcode begonnen werden.
Ich persönlich halte die Programmformatierung, die aktuell in Mode ist, und die auch von den Codeformattern unterstützt wird, für extrem unübersichtlich, aber jedem das Seine.

idefix2, mir ist es schnuppe wie du formatierst, das war nicht meine Intention hinter der Bemerkung. Ich wollte damit nur sagen, dass man bei einigen Formatierungen später u. U. nicht weiß wo der Debuger nun gerade ist. Wie du es machst, ist deine Sache. Was übersichtlich ist eine andere.

Bleibt der Debuger in der Zeile stehen, weiß ich nicht ob er gerade bei
Delphi-Quellcode:
if then
ist oder bei
Delphi-Quellcode:
exit
. Aber hier kann ich zumindest meine Erfahrung einsetzen:
Delphi-Quellcode:
  if a = b then exit;
  ...
Verwirrender wird aber das
Delphi-Quellcode:
  if a = b
  then exit;
Bleibt er hier in
Delphi-Quellcode:
then exit;
Zeile stehen, weiß ich wirklich nicht wo er ist.

Denn, im ersten Beispiel wurden zwei Anweisungen in einer Zeile geschrieben.

Im zweiten Beispiel wurde eine Anweisung auf zwei Zeilen verteilt. Also wenn der Debuger weiß in welche Zeile er gerade ist, dass Respekt, ich wüsste dann nicht ob er gerade noch
Delphi-Quellcode:
if then
ist oder
Delphi-Quellcode:
exit
.

Aber wie gesagt, ich wollte dich nicht kritisieren. Ich sagte nur u. U. unverständlich sein könnte.

Popov 15. Mai 2015 11:44

AW: Gibt es Hexen?
 
Zitat:

Zitat von Sir Rufo (Beitrag 1301642)
Ich drücke einmal auf STRG-D und schon ist es so, wie ich das will.

Welche Software? Hotkey kenne ich nicht.

himitsu 15. Mai 2015 12:09

AW: Gibt es Hexen?
 
In der neuen IDE, also 1-2 Versionen nach dir (ich glaub ab D2005 oder 2006) :stupid:

Oder über Fremdcomponenten. (cnPack oder GExperts ... irgendwo war da auch was drin, aber da standardmäßig unter einem anderen ShortCut, weil sich bei denen im Strg+D was Anders befindet :freak:)

Bjoerk 15. Mai 2015 12:09

AW: Gibt es Hexen?
 
In den neuen Delphi Versionen ist ein Code Formatter integriert. Ansonsten tuts z.B. auch CnPack. Ich persönlich verwende den Jedi Code Formatter.

p80286 15. Mai 2015 13:40

AW: Gibt es Hexen?
 
Um auf die Ausgangsfrage zurück zu kommen:
Ja es gibt sie!
siehe hierzu
Hexenhammer - Heinrich Kramer
Der Hexer - Edgar Wallace
Der Hexer von Salem - Wolfgang Holbein
und andere

Vor allem Menschen die in Sourcecodes bevorzugt {}==--= etc. einsetzen sind hierdurch als Hexer zu identifizieren. Bitte nicht mit Zauberern verwechseln die gerne Formulierungen wie Push eax oder Mov eax,ebx und das ; verwenden.

Gruß
K-H

implementation 15. Mai 2015 14:18

AW: Gibt es Hexen?
 
Laut dem Blutigen Buch stehen Hexen übrigens immer zwischen Birken!

Dejan Vu 15. Mai 2015 18:56

AW: Gibt es Hexen?
 
Zitat:

Zitat von p80286 (Beitrag 1301659)
Vor allem Menschen die in Sourcecodes bevorzugt {}==--= etc. einsetzen sind hierdurch als Hexer zu identifizieren.

Genau! Sie bekommen nämlich Dinge hin, von denen Normalos (Begin, End, inc, <> etc.) nur träumen. :stupid:

Der schöne Günther 15. Mai 2015 19:11

AW: Gibt es Hexen?
 
Nur leider enden sie für gewöhnlich auf einem Scheiterhaufen.

Dejan Vu 15. Mai 2015 19:15

AW: Gibt es Hexen?
 
Nicht mehr.
Die modernen Hexer sind die Zauberer des 21.Jahrhunderts.
Kein Wunder. Sie haben ja auch mehr Zeit, denn die Programme sind 10x schneller fertig, mindestens. Warum? Weil sie 10x weniger Zeichen eintippen. Da bleibt einfach mehr Zeit, sich mit Hexerei zu beschäftigen. Oder wahlweise am Strand rumzulungern, oder sich weiterzubilden, obwohl das nur Schattenparker machen, der echte Programmierer beschäftigt sich mit Anleitungen, Bugs zu umschiffen. Das schafft Nähe und so ein Wir-Gefühl.

DP-Maintenance 15. Mai 2015 20:07

Dieses Thema wurde am "15. May 2015, 21:07 Uhr" von "Daniel" aus dem Forum "Algorithmen, Datenstrukturen und Klassendesign" in das Forum "Klatsch und Tratsch" verschoben.

Der schöne Günther 15. Mai 2015 20:19

AW: Gibt es Hexen?
 
Stockholm-Syndrom :love:

Würde ich hexen, wäre ich wahrscheinlich schon fertig und hätte Feierabend. :-(


Mann, ich habe wieder Lust Krabat zu lesen


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:05 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