Procedure Call Completion geht nicht oooder ich mache etwas falsch

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
nevermore2k
Beiträge: 76
Registriert: Sa 1. Mai 2021, 15:39

Procedure Call Completion geht nicht oooder ich mache etwas falsch

Beitrag von nevermore2k »

https://wiki.freepascal.org/Lazarus_IDE ... Completion

So wie ich es verstanden habe, kann man irgendwo anfangen z.b. ne procedure DoSomething(i); zu tippen und dann den Shortcut usw.

irgendwie passiert bei mir garnichts. Ist das gerade etwas buggy oder mache ich es falsch :)

Code: Alles auswählen

procedure TForm1.SomeProcedure;
var
  i: Integer;
begin
  i:=3;
  DoSomething(i);
end;
               
da klicke ich auf DoSomething und drücke Shift+Ctrl+c

Benutzeravatar
Winni
Beiträge: 796
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.0.12, fpc 3.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Procedure Call Completion geht nicht oooder ich mache etwas falsch

Beitrag von Winni »

Hi!

Dein Vorgehen gilt für Variablen, die noch nicht definiert sind.

Bei Proceduren ist es umgekehrt:

Schreib Deine Procedure in das Interface, z.B. innerhalb der Definition von TForm1:


Code: Alles auswählen

   TForm1 = class(TForm)
			...
                      procedure DoSomeThing (i: Integer);
                      ....
                     end;
Jetzt kannst Du auf DoSomeThing mit Ctrl-Shift-C klicken und im Interface steht der leere Procedure-Rumpf.
Immer anders als man denkt ...

Winni

nevermore2k
Beiträge: 76
Registriert: Sa 1. Mai 2021, 15:39

Re: Procedure Call Completion geht nicht oooder ich mache etwas falsch

Beitrag von nevermore2k »

Alles klar :)

Aber dann stimmt das ja im Freepascal wiki nicht so ganz.
Procedure Call Completion

Die Codevervollständigung kann auch eine neue Prozedur aus dem Prozeduraufruf selbst erzeugen.

Angenommen, Sie haben gerade die Anweisung "DoSomething(Width);" geschrieben

Code: Alles auswählen

procedure SomeProcedure;
var
  Width: integer;
begin
  Width:=3;
  DoSomething(Width);
end;

Platzieren Sie den Kursor über dem Bezeichner "DoSomething" und drücken Sie Strg+⇧ Shift+C. Sie erhalten:

Code: Alles auswählen

procedure DoSomething(aWidth: LongInt);
begin

end;

procedure SomeProcedure;
var
  Width: integer;
begin
  Width:=3;
  DoSomething(Width);
end;
Es werden derzeit noch keine Funktionen oder Methoden erzeugt.

Benutzeravatar
Winni
Beiträge: 796
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.0.12, fpc 3.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Procedure Call Completion geht nicht oooder ich mache etwas falsch

Beitrag von Winni »

Hallo!

Ja, die Doc ist falsch:

Bei

Code: Alles auswählen

Procedure DoSomething
macht die Tastatur-Kombi garnix.

Bei

Code: Alles auswählen

Procedure TForm1.DoSomething
springt der Cursor nach dem Anfang der Klassen-Definition von Form1.
Soll er auch, weil Shift-Ctrl-CursorUp nach der Interface-Definition sucht.
Die findet er nicht, also springt er an den Anfang der Klasse macht die Zeile orange, weil er nix findet.

Keine Ahnung - ich hab's nie benutzt.

Ich schreib immer meine Proceduren im der Implementation.
Und wenn ich wieder das Interface vergessen hab, dann jammert der Compiler.
Dafür hat man ihn.

Winni

Antworten