Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Automatisches Einfügen von "End" funktioniert nicht mehr (https://www.delphipraxis.net/187334-automatisches-einfuegen-von-end-funktioniert-nicht-mehr.html)

Aviator 20. Nov 2015 09:17

Automatisches Einfügen von "End" funktioniert nicht mehr
 
Hallo Delphianer,

aktuell habe ich in einem Projekt (welches noch relativ klein ist [ca. 1500 LOC geschätzt]) das Problem, dass das zu einem
Delphi-Quellcode:
begin
passende
Delphi-Quellcode:
end;
beim Drücken auf Enter nicht mehr automatisch eingefügt wird. Das Problem hatte ich schon öfters bei anderen Projekten. Das Problem tritt auch nur in einer Unit des Projektes auf. In den anderen funktioniert es.

Oft trat der Fehler dann auf, wenn in einer Methode eine oder mehrere Untermethoden erstellt wurden. Bspw. so etwas in der Art (aktuell konnte ich den Fehler in einem anderen Projekt nicht simulieren). In dem aktuellen Projekt in dem dieser Fehler auftritt sind solche Untermethoden nicht vorhanden:
Delphi-Quellcode:
procedure Foo;
  function Test: string;
  begin
    Result := '';
  end;
var
  s: string;
begin
  s := Test;
end;
Wenn hier nun an irgendeiner Stelle ein
Delphi-Quellcode:
begin
eingefügt und dann Enter gedrückt wird, sollte normalerweise das dazugehörige
Delphi-Quellcode:
end;
eingefügt werden. In den IDE Optionen ist auch nichts deaktiviert, trotzdem funktioniert es nicht. Auch ein Neustart der IDE hilft nicht. Ich denke das Problem ist bekannt und ich hoffe mir kann jemand dabei helfen. (Benutzt wird bei dem Projekt in dem es nicht funktioniert Delphi XE3.)

Perlsau 20. Nov 2015 09:46

AW: Automatisches Einfügen von "End" funktioniert nicht mehr
 
Zitat:

Zitat von Aviator (Beitrag 1321974)
Delphi-Quellcode:
procedure Foo;
  function Test: string;
  begin
    Result := '';
  end;
var
  s: string;
begin
  s := Test;
end;

Soweit mir bekannt hat dieser Automatismus noch nie funktioniert, nachdem man in einer Methode eine Subroutine erstellt hat. Workaround, wenn du unbedingt drauf angewiesen bist: lagere oder kommentiere die Subroutine aus, so lange du an der Hauptroutine schreibst.

Sir Rufo 20. Nov 2015 10:45

AW: Automatisches Einfügen von "End" funktioniert nicht mehr
 
Man erlebt so Einiges mit dem automatischen Einfügen. Mal kommt es nicht mehr und mal an jeder Stelle, wo man die Enter-Taste betätigt.

Es ist ein Roulette-Spiel :stupid:

Aviator 20. Nov 2015 11:17

AW: Automatisches Einfügen von "End" funktioniert nicht mehr
 
Zitat:

Zitat von Perlsau (Beitrag 1321982)
Zitat:

Zitat von Aviator (Beitrag 1321974)
Delphi-Quellcode:
procedure Foo;
  function Test: string;
  begin
    Result := '';
  end;
var
  s: string;
begin
  s := Test;
end;

Soweit mir bekannt hat dieser Automatismus noch nie funktioniert, nachdem man in einer Methode eine Subroutine erstellt hat. Workaround, wenn du unbedingt drauf angewiesen bist: lagere oder kommentiere die Subroutine aus, so lange du an der Hauptroutine schreibst.

Hallo Perlsau,
der gezeigte Quellcode mit der Subroutine war wirklich nur als Beispiel gedacht. Ich mag die Dinger selbst nicht und benutze sie deshalb auch nicht. Nur war das ein Beispiel, bei dem ich mir ziemlich sicher bin, dass - sobald eingebaut in den Quelltext - die Vervollständigung nicht mehr funktioniert. Nur habe ich solche Subroutinen nicht in meinem Quellcode verbaut und trotzdem funktioniert sie nicht. :cry:

@Sir Rufo: Ja da wirst du wohl recht haben. Schön wäre es trotzdem wenn es irgendwie wieder funktioniert bzw. jemand eine Lösung dafür hat.

Als Hinweis: Das IDE FixPack habe ich nicht installiert und wollte es auch nicht installieren (auch wenn es den Fehler beheben würde). Habe damit einmal schlechte Erfahrungen gemacht und nutze es seitdem nicht mehr.

LeisureSuitLarry 20. Nov 2015 11:22

AW: Automatisches Einfügen von "End" funktioniert nicht mehr
 
Eventuel hilft CNWizard Cnpack.org, dem muss man aber erst mal die anderen Automatismen austreiben.

Manfred

Aviator 20. Nov 2015 14:44

AW: Automatisches Einfügen von "End" funktioniert nicht mehr
 
Zitat:

Zitat von LeisureSuitLarry (Beitrag 1321996)
Eventuel hilft CNWizard Cnpack.org, dem muss man aber erst mal die anderen Automatismen austreiben.

Manfred

CnPack habe ich installiert. Ich denke du meinst die Quelltext Eingabehelfer. Die werde ich mir mal anschauen. Vielleicht funktionieren die ja problemlos. Doppelt scheint da nix eingefügt zu werden. Das werde ich aber nochmal testen. Danke für den Hinweis.

Edit: Ich habe mal etwas damit rumgespielt. Bei den Pre-Definierten Symbolen kann man bei dem Symbol "begin" den Scope bzw. Bereich hoch stellen. In den benutzerdefinierten Symbolen legt man sich dann ein "begin end;" Template an und stellt dort den Scope/Bereich auf 0. Somit erscheint der Eintrag immer über dem Begin..End der IDE. Man kann den IDE Eintrag natürlich auch ganz entfernen, dass wollte ich jetzt aber nicht machen.

Edit2: Ein Nachteil hat das Ganze aber doch. Wenn ich das Template abbreche und nicht einfüge, ich jedoch trotzdem ein End; hinter irgendeiner anderen Zeile weiter unten einfügen will, dann wäre das der Automatismus der IDE. Der Funktioniert aber leider ja nicht. Deshalb ist die Lösung nur bedingt gut. Wenn man einen komplett neuen Begin..End; Block machen möchte, dann ist das Template jedoch ganz gut zu gebrauchen.


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