![]() |
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? |
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.
|
AW: Gibt es Hexen?
Mach es so, ist besser:
Delphi-Quellcode:
Alles andere sind Modeerscheinungen, beim debugen rächt sich das.
if ... then
begin if ... then exit; end; |
AW: Gibt es Hexen?
Oder einfach so (das ist sogar nicht nur besser, sondern besserer!):
Delphi-Quellcode:
Alles andere sind lächerliche Versuche der Tastaturmafia, uns zu überflüssigem Tippen zu verleiten, um den Tastaturumsatz anzukurbeln.
if ... then
if ... then |
AW: Gibt es Hexen?
Auch wieder ein super Thread-Titel
|
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; |
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. |
AW: Gibt es Hexen?
Man könnte ja mal im Debugger schauen, was für ein Code an der Stelle liegt. :stupid:
|
AW: Gibt es Hexen?
Zitat:
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. |
AW: Gibt es Hexen?
Zitat:
Delphi-Quellcode:
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.
if foo then
if bar then doBar() else else doFoo(); |
AW: Gibt es Hexen?
Zitat:
Delphi-Quellcode:
Nicht, daß sonst noch jemand auf eine andere Idee kommt.
if not foo then
doFoo() else if bar then doBar(); if not foo then doFoo() else if bar then doBar(); uvm.
Delphi-Quellcode:
OK, zumindestens ist der Code nicht falsch. :stupid:
if foo then
else doFoo(); PS: Ich hatte vor dem ersten Öffnen an HEXen gedacht. |
AW: Gibt es Hexen?
@Dejan Vu
Wenn du dich auf das obere Beispiel beziehst:
Delphi-Quellcode:
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
if ... then
begin if ... then exit; end;
Delphi-Quellcode:
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.
if ... then
if ... then exit; Wobei man wiederum hier aufpassen sollte:
Delphi-Quellcode:
wenn man das meint:
if ... then
if ... then exit else nixda;
Delphi-Quellcode:
Wobei das Delphi nicht schlucken wird, da es das nicht versteht.
if ... then
if ... then exit; else nixda;
Delphi-Quellcode:
Das wird klappen. Aber aus gründen der Lesbarkeit mache ich auch das:
if ... then
begin if ... then exit; end else nixda;
Delphi-Quellcode:
nicht weil es besser ist, aber so erkenne ich 0,2 Sekunden schneller wie das Programm gedacht ist. Aber jedem das Seine.
if ... then
begin if ... then exit else nixda; end; |
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:
um die Zusammengehörigkeit der Code-Blöcke eindeutig festzulegen.
begin end
|
AW: Gibt es Hexen?
Auch immer nett: :)
Delphi-Quellcode:
if .. then
if .. then .. else .. ; |
AW: Gibt es Hexen?
Zitat:
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. |
AW: Gibt es Hexen?
Zitat:
Delphi-Quellcode:
und darum nicht den Fehler finden kann dann gibt es eben was an die Backen.
// Ja, wo simma denn?
if ... then begin ... end else begin ... end; 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. |
AW: Gibt es Hexen?
![]() 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. |
AW: Gibt es Hexen?
Zitat:
Bleibt der Debuger in der Zeile stehen, weiß ich nicht ob er gerade bei
Delphi-Quellcode:
ist oder bei
if then
Delphi-Quellcode:
. Aber hier kann ich zumindest meine Erfahrung einsetzen:
exit
Delphi-Quellcode:
Verwirrender wird aber das
if a = b then exit;
...
Delphi-Quellcode:
Bleibt er hier in
if a = b
then exit;
Delphi-Quellcode:
Zeile stehen, weiß ich wirklich nicht wo er ist.
then exit;
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:
ist oder
if then
Delphi-Quellcode:
.
exit
Aber wie gesagt, ich wollte dich nicht kritisieren. Ich sagte nur u. U. unverständlich sein könnte. |
AW: Gibt es Hexen?
Zitat:
|
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:) |
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.
|
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 |
AW: Gibt es Hexen?
Laut dem Blutigen Buch
![]() |
AW: Gibt es Hexen?
Zitat:
|
AW: Gibt es Hexen?
Nur leider enden sie für gewöhnlich auf einem Scheiterhaufen.
|
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 ![]() |
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.
|
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 ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:55 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