Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Compilerschalter der Autoformat verhindert (https://www.delphipraxis.net/206865-compilerschalter-der-autoformat-verhindert.html)

norwegen60 4. Feb 2021 15:47

Compilerschalter der Autoformat verhindert
 
Hallo zusammen,

gibt es eine Möglichkeit einzelne Blöcke gegen Autoformat [CTRL-D] zu schützen

Ich habe hier eine Sortierung einer Objectlist die sähe lesbar so aus

Delphi-Quellcode:
begin
  Sort(TComparer<TStandardName>.Construct(
  function(const Value1, Value2: TStandardName): Integer
  begin
    if (Value1.Nr = 0) then                 // Verhindern, dass Datensatz 0 sortiert wird
      Result := -1
    else if (Value2.Nr = 0) then            // Verhindern, dass Datensatz 0 sortiert wird
      Result := 1
    else if (Value1.Name = Value2.Name) then // Bei gleichen Namen nach Nr sortieren
      Result := Value1.Nr - Value2.Nr
    else if (Value1.Name > Value2.Name) then
      Result := 1
    else
      Result := -1;
  end));
end;
und nach [CTRL-D ] so
Delphi-Quellcode:
begin
  Sort(TComparer<TStandardName>.Construct( function(const Value1, Value2: TStandardName): Integer begin if (Value1.Nr = 0) then
    // Verhindern, dass Datensatz 0 sortiert wird
    Result := -1 else if (Value2.Nr = 0) then           // Verhindern, dass Datensatz 0 sortiert wird
    Result := 1 else if (Value1.Name = Value2.Name) then // Bei gleichen Namen nach Nr sortieren
    Result := Value1.Nr - Value2.Nr else if (Value1.Name > Value2.Name) then Result := 1 else Result := -1; end));
end;
Grüße und Danke
Gerd

Andreas13 4. Feb 2021 15:56

AW: Compilerschalter der Autoformat verhindert
 
Bei XE5:
Tools --> Optionen --> Formatierung --> Profile und Status:
dort Kästchen „Formatierung aktivieren“ wegklicken (= deaktivieren)

Gruß, Andreas
PS:
Du kannst darüber hinaus noch Folgendes einstellen, um vorzeitige Zeilenumbrüche zu vermeiden:
Tools --> Optionen --> Anzeige:
Option „Rechter Rand“ auf einen hohen Wert (z.B. 200) setzen.

Uwe Raabe 4. Feb 2021 16:09

AW: Compilerschalter der Autoformat verhindert
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von norwegen60 (Beitrag 1482251)
gibt es eine Möglichkeit einzelne Blöcke gegen Autoformat [CTRL-D] zu schützen

Hinter jede Zeile ein // setzen. Mit der Option Zeilenendekommentare ausrichten sieht das dann so aus:

stahli 4. Feb 2021 16:12

AW: Compilerschalter der Autoformat verhindert
 
Mein Optimizer würde aktuell das draus machen:

Delphi-Quellcode:
begin
  Sort(TComparer<TStandardName>.Construct(
                                  function(const Value1, Value2: TStandardName): Integer
                                  begin
                                    if (Value1.Nr = 0) then // Verhindern, dass Datensatz 0 sortiert wird
                                    Result := -1
                                    else if (Value2.Nr = 0) then // Verhindern, dass Datensatz 0 sortiert wird
                                    Result := 1
                                    else if (Value1.Name = Value2.Name) then // Bei gleichen Namen nach Nr sortieren
                                    Result := Value1.Nr - Value2.Nr
                                    else if (Value1.Name > Value2.Name) then
                                      Result := 1
                                    else
                                      Result := -1;
                                  end));
end;
Auch noch nicht ganz passend, aber an ein paar Stellen könnte man noch drehen.
Aber es wäre dann halt ein kompletter Ersatz des Formatierers und derzeit nur für die aktuellste Delphi-Version möglich.

TiGü 4. Feb 2021 16:14

AW: Compilerschalter der Autoformat verhindert
 
Da hat jemand aber die Einstellung vom Autoformatter kaputtgespielt.
Denn keine der drei Default-Formater_*.config-Dateien in C:\Users\Dein_User_Name\AppData\Roaming\Embarcader o\BDS\Deine_IDE_Nummer formatiert das so um.

Vielleicht die Einstellung zurücksetzen an der ersten von Andreas benannten Stelle (Restore defaults).

himitsu 4. Feb 2021 16:19

AW: Compilerschalter der Autoformat verhindert
 
Zitat:

Zitat von TiGü (Beitrag 1482257)
Da hat jemand ...

Zitat:

Zitat von stahli (Beitrag 1482256)
Mein Optimizer

:zwinker:


Zitat:

Delphi-Quellcode:
    if (Value1.Nr = 0) then // Verhindern, dass Datensatz 0 sortiert wird
      Result := -1
    else if (Value2.Nr = 0) then // Verhindern, dass Datensatz 0 sortiert wird
      Result := 1

"mach nichts" heißt doch eigentlich 0?
Delphi-Quellcode:
    if (Value1.Nr = 0) or (Value2.Nr = 0) then // Verhindern, dass Datensatz 0 sortiert wird
      Result := 0

PS:
Delphi-Quellcode:
  Sort(TComparer<TStandardName>.Construct(
    function(const Value1, Value2: TStandardName): Integer
    begin
      if (Value1.Nr = 0) or (Value2.Nr = 0) then // Verhindern, dass Datensatz 0 sortiert wird
        Result := 0
      else if SameStr(Value1.Name, Value2.Name) then
        Result := CompareValue(Value1.Nr, Value2.Nr)
      else
        Result := CompareStr(Value1.Name, Value2.Name);
    end));

  // der erste Kommentar ist klar, aber der Zweite ist nutzlos.
  // "Bei gleichen Namen" steht lesbar direkt davor, vor allem wenn man IF-SameStr nutzen würde
  // und "nach Nr sortieren" kommt schön sichtbar gleich nach dem THEN

  // bzw.
  Sort(TComparer<TStandardName>.Construct(
    function(const Value1, Value2: TStandardName): Integer
    begin
      if (Value1.Nr = 0) or (Value2.Nr = 0) then
        Exit(0); // Verhindern, dass Datensatz 0 sortiert wird
      Result := CompareStr(Value1.Name, Value2.Name);
      if Result = 0 then
        Result := CompareValue(Value1.Nr, Value2.Nr);
    end));
// Eventuell AnsiCompareStr statt CompareStr ... aber damit man das Schema besser erkennt

norwegen60 4. Feb 2021 16:36

AW: Compilerschalter der Autoformat verhindert
 
Danke für die schnellen Rückantworten. Grundsätzlich gilt, dass ich mit der Formatierung weitestgehens einverstanden bin. Das Verhalten tritt nur bei dem Sort auf.
Die Formatierung grundsätzlich zurück zu setzen ist deshalb keine Option

Die Idee mit den Kommantarzeichen hatte ich ja auch. Er hatte es aber trotzdem verschossen (siehe mein Eingangspost)

Jetzt, aber wo ich wirklich hinter jede Zeile eine Kommentar gesetzt hab wird es gut formatiert

Delphi-Quellcode:
 
  Sort(TComparer<TStandardName>.Construct(                 //
    function(const Value1, Value2: TStandardName): Integer //
  begin                                                   //
    if (Value1.Nr = 0) then                               // Verhindern, dass Datensatz 0 sortiert wird
    Result := -1                                           //
  else if (Value2.Nr = 0) then                            // Verhindern, dass Datensatz 0 sortiert wird
    Result := 1                                            //
  else if (Value1.Name = Value2.Name) then                // Bei gleichen Namen nach Nr sortieren
    Result := Value1.Nr - Value2.Nr                       //
  else if (Value1.Name > Value2.Name) then                //
    Result := 1                                            //
  else                                                    //
    Result := -1;                                         //
  end));
Ich muss dazu sagen, dass es Delphi XE war. Vielleicht ist 10 da schon etwas besser.
Und ich hatte gehofft, dass es vielleicht einen Schalter ähnlich den Compilerschaltern gibt, mit dem man AutoFormat Bereichsweise aussparen kann

Danke trotzdem. Für mich ist das Problem gelöst

Uwe Raabe 4. Feb 2021 16:39

AW: Compilerschalter der Autoformat verhindert
 
Zitat:

Zitat von norwegen60 (Beitrag 1482259)
Ich muss dazu sagen, dass es Delphi XE war. Vielleicht ist 10 da schon etwas besser.

Das wäre schon eine wichtige Information gewesen. Und ja, es ist deutlich besser geworden.

norwegen60 4. Feb 2021 16:44

AW: Compilerschalter der Autoformat verhindert
 
Ja, das stimmt :oops:
In Wirklichkeit sind die Kommentarzeichen auch noch untereinander. Beim Übertrag hier her ging das aber verloren

Danke

bernau 4. Feb 2021 16:55

AW: Compilerschalter der Autoformat verhindert
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1482254)
Hinter jede Zeile ein // setzen.

Ahh. Cool. Muss ich mir merken.

Schön wäre es, wenn man den Formatter so einstellen könnte, dass nur die Function/Procedure, in der sicher Cursor grade befindet, formatiert wird.

himitsu 4. Feb 2021 17:22

AW: Compilerschalter der Autoformat verhindert
 
Du kannst die Funktion markieren/selektieren, dann wird nur das Markierte formatiert.

bernau 4. Feb 2021 17:28

AW: Compilerschalter der Autoformat verhindert
 
Zitat:

Zitat von himitsu (Beitrag 1482263)
Du kannst die Funktion markieren/selektieren, dann wird nur das Markierte formatiert.


Manchmal ist das einfache so nah.

Gibt es eine Tastenkombi, mit der man eine ganze Procedure markiert, in der sich der Cursor grade befindet?

TigerLilly 4. Feb 2021 20:46

AW: Compilerschalter der Autoformat verhindert
 
Bin nicht sicher, ob das nur für GExperts/cnbPack gilt + kanns grad nicht überprüfen:

Code:
Everything between {(*} and {*)} does not get formatted.

bernau 4. Feb 2021 20:58

AW: Compilerschalter der Autoformat verhindert
 
Zitat:

Zitat von TigerLilly (Beitrag 1482285)
Bin nicht sicher, ob das nur für GExperts/cnbPack gilt + kanns grad nicht überprüfen:

Code:
Everything between {(*} and {*)} does not get formatted.

Schnell geprüft..... Ne, leider nicht für den integrierten Formatter.

Uwe Raabe 4. Feb 2021 22:31

AW: Compilerschalter der Autoformat verhindert
 
Zitat:

Zitat von bernau (Beitrag 1482264)
Gibt es eine Tastenkombi, mit der man eine ganze Procedure markiert, in der sich der Cursor grade befindet?

Oft genug Ctrl-W drücken.

TiGü 5. Feb 2021 08:23

AW: Compilerschalter der Autoformat verhindert
 
Zitat:

Zitat von himitsu (Beitrag 1482258)
Zitat:

Zitat von TiGü (Beitrag 1482257)
Da hat jemand ...

Zitat:

Zitat von stahli (Beitrag 1482256)
Mein Optimizer

:zwinker:

Mein Kommentar bezog sich auf das zweite Quelltext-Beispiel im ersten Threadbeitrag von norwegen60 und nicht auf die Whitespace-Wüste von stahli.
Das ergibt sich aber aus den Kontext und den Zeitstempel der Beiträge.
Bitte nicht so schnell (quer) lesen und unüberlegt posten.

Zwinker-Smiley!

stahli 5. Feb 2021 09:34

AW: Compilerschalter der Autoformat verhindert
 
Zitat:

Zitat von TiGü (Beitrag 1482306)
... Whitespace-Wüste von stahli ...

Und dabei war ich so stolz darauf, dass mein Tool solche anonymen Methoden am letzten Punkt ausrichten kann.
Wäre natürlich auch optional möglich, das abzuschalten und am Startzeichen der vorherigen Zeile auszurichten.

Ist halt doch sehr unterschiedlich, was da jeder möchte...

TiGü 5. Feb 2021 09:45

AW: Compilerschalter der Autoformat verhindert
 
Formatierungsvorlieben sind wie das Aussehen des präferierten Sexualpartners.
Jeder tickt da anders. Was den einen abstößt, findet der andere geil!


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