Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Autovervollständigung geht nicht (https://www.delphipraxis.net/216354-autovervollstaendigung-geht-nicht.html)

Willie1 15. Dez 2024 17:49

Autovervollständigung geht nicht
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Leute,
ich bin's schon wieder.

In meinem (sehr alten) Projekt Fussball funktioniert die Autovervollständigung nicht. Wenn ich es "von Hand" mache, lässt es sich kompilieren und läuft. Ich habe hier im Forum gesucht. Es gibt einen langen Thred zu diesem Thema. Es soll an
Delphi-Quellcode:
with
liegen, das ich hier sehr intensiv nutze. Meine Type Deklarationen sind sehr umfangreich. Könnt ihr euch das mal im Anhang ansehen. Alle
Delphi-Quellcode:
with
zu entfernen, wäre extrem mühsam. Wie gesagt, das Programm läuft seit vielen Jahren stabil. Jetzt will ich es verbessern. Danke.

Willie.

jaenicke 15. Dez 2024 19:26

AW: Autovervollständigung geht nicht
 
Die Codevervollständigung ist leider ein schwieriges Thema, wenn man unsaubere Quelltexte mit Kreuzbeziehungen oder with hat und eine Delphiversion mit dem neuen LSP hat.

In deiner 10.1 Starter Edition hast du aber noch die alte Codevervollständigung ohne LSP. Da sollte die Vervollständigung zumindest aufgehen. Dass sie mit with nicht immer gute Vorschläge machen kann, liegt in der Natur der Sache. Aber abgesehen davon sollte es funktionieren.

Geht denn die Auswahlliste grundsätzlich auf? Sprich was genau passiert?

Davon abgesehen bringt with aber noch weitere Probleme, weshalb man es ohnehin beseitigen sollte:
  • Debuggen funktioniert an den Stellen nicht.
  • Beim Wechsel zu einer neueren Delphiversion kann es plötzlich Fehler beim Kompilieren geben.
  • Oder noch schlimmer: Es kompiliert nach dem Wechsel, tut aber das Falsche, ohne dass man so leicht die Ursache erkennen kann.
  • Der Code ist schlechter lesbar, weil man nicht direkt sieht, wozu Identifier innerhalb des with gehhören.

Willie1 16. Dez 2024 16:32

AW: Autovervollständigung geht nicht
 
Zitat:

Zitat von jaenicke (Beitrag 1544259)
Geht denn die Auswahlliste grundsätzlich auf? Sprich was genau passiert?

Wenn ich den Punkt setze ist kurz der Sanduhr-Kringel zu sehen und dann passiert nichts.

Ich habe viele
Delphi-Quellcode:
with Objekt1, Objekt2 do begin end
und verschachtelte
Delphi-Quellcode:
with
.

In Delphi Büchern wurde with empfohlen, um Quelltext zu sparen. Aber jetzt werde ich sie sukzessive entfernen.

Ich denke, dass meine Typ Deklarationen im Vergleich zu einem professionellen Programm sicher nicht aufwändig sind.

Willie.

himitsu 16. Dez 2024 16:46

AW: Autovervollständigung geht nicht
 
Dafür, dass WITH mehr Probleme bereitet, als es Quellcode/Speicher einspart, was selbst eine 1-buchstabige lokale Variable besser lösen würde ...

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  R: TRect;
begin
  ...
  with R do begin
    Width := Right - Right;
    Height := Bottom - Top;
  end;
end;
Was denkt du, könnte dieser Code denn machen?

Jeweils in Delphi 7 und in Delphi 10 :stupid:

omnibrain 16. Dez 2024 16:50

AW: Autovervollständigung geht nicht
 
Zitat:

Zitat von himitsu (Beitrag 1544327)
Dafür, dass WITH mehr Probleme bereitet, als es Quellcode/Speicher einspart, was selbst eine 1-buchstabige lokale Variable besser lösen würde ...

"with" ist für jemanden der erst spät und von anderen Sprachen zu Delphi kam echt das schlimmste Sprachfeature überhaupt...

himitsu 16. Dez 2024 17:09

AW: Autovervollständigung geht nicht
 
inline variables :stupid:

OK, nicht der perfekte WITH-Ersatz und erst in Delphi 12.2 repariert,
Delphi-Quellcode:
irgendwas.x := 123;

with irgendwas do
  x := 123;

var i := irgendwas;
i.x := 123:


aber für FOR das Perfekteste, weil hier niermand mehr auf die saublöde Idee kommen kann, nach/außerhalb der Schleife nochmal auf i zugreifen zu wollen.
Delphi-Quellcode:
for var i := 1 to 10 do

Frickler 17. Dez 2024 09:52

AW: Autovervollständigung geht nicht
 
Zitat:

Zitat von himitsu (Beitrag 1544329)
aber für FOR das Perfekteste, weil hier niermand mehr auf die saublöde Idee kommen kann, nach/außerhalb der Schleife nochmal auf i zugreifen zu wollen.
Delphi-Quellcode:
for var i := 1 to 10 do

So ist es. Deswegen ist für mich völlig unverständlich, warum man das nicht auch für with gemacht hat.
Delphi-Quellcode:
with var x := myImage1.Canvas, y := myImage2.Canvas.Brush do x.CopyRect(...);
mit x und y unbekannt außerhalb des Konstruktes.

himitsu 17. Dez 2024 09:56

AW: Autovervollständigung geht nicht
 
Delphi-Quellcode:
...
begin
  var x := myImage1.Canvas;
  var y := myImage2.Canvas.Brush;
  x.CopyRect(...);
  ... // x
end;
... // kein x
:angel:

Frickler 17. Dez 2024 09:59

AW: Autovervollständigung geht nicht
 
Delphi-Quellcode:
begin
  var i: integer;
  for i:=1 to 10 do ...
end;

himitsu 17. Dez 2024 10:12

AW: Autovervollständigung geht nicht
 
Da ist i aber dennoch außerhalb des VAR zugreifbar.

Delphi-Quellcode:
begin
  var i: integer;
  for i := 1 to 10 do begin

  end;

  hier
end;
Delphi-Quellcode:
for var i := 1 to 10 do begin

end;

hier nicht


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:45 Uhr.
Seite 1 von 3  1 23      

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