Delphi-PRAXiS
Seite 1 von 2  1 2   

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 16: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 16: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 17: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 17: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 17: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 17: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 17: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 17: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 17: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 17: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.


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:24 Uhr.
Seite 1 von 2  1 2   

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