procedure $Param - Was kann das?

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
schoschy
Beiträge: 26
Registriert: Di 18. Okt 2022, 15:46

procedure $Param - Was kann das?

Beitrag von schoschy »

Hey,

ich war eben etwas schreibfaul und wollte eine Procedure mittels ctrl+j erstellen.
> ctrl+j par

dabei wurde mir folgendes Konstrukt entgegengebracht, welches ich noch nicht gesehen habe:

Code: Alles auswählen

procedure $Param(ProcName)($Param());
begin
  |                              // auch das "|" ist enthalten
end; 
bei einer Function geht das gut:

Code: Alles auswählen

function Name( ): Type;
begin

end; 
im wiki bin ich direkt nicht fündig geworden.
Wo kommt das $Param her und welche Vor-/Nachteile hat das?

>fpc324_laz230
Zuletzt geändert von schoschy am Fr 3. Nov 2023, 07:24, insgesamt 1-mal geändert.

siro
Beiträge: 732
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 11
CPU-Target: 64Bit
Wohnort: Berlin

Re: procedure

Beitrag von siro »

sieht bei mir auch so aus:

Code: Alles auswählen

procedure $Param(ProcName)($Param());
begin
  |
end;      
Lazarus 2.2.0 (rev lazarus_2_2_0) FPC 3.2.2 x86_64-win64-win32/win64
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

Benutzeravatar
theo
Beiträge: 10499
Registriert: Mo 11. Sep 2006, 19:01

Re: procedure

Beitrag von theo »

Beim Menu Werkzeuge -> Vorlagen bei "procedure" "Makros einschalten" anwählen sollte helfen.
Könnte man als Mini-Bug melden. :wink:

Und ein etwas aussagekräftigerer Thread Titiel könnte nicht schaden. "Procedure".... :roll:
Dateianhänge
laz_vorl.png
laz_vorl.png (82.54 KiB) 4742 mal betrachtet

schoschy
Beiträge: 26
Registriert: Di 18. Okt 2022, 15:46

Re: procedure

Beitrag von schoschy »

Moin,

dass das generell so aussieht, ist jetzt bestätigt worden.
Jetzt kommt die Frage, was diese Vorlage kann. :wink:

Den Threadtitel pass ich eben noch an.

Benutzeravatar
theo
Beiträge: 10499
Registriert: Mo 11. Sep 2006, 19:01

Re: procedure

Beitrag von theo »

schoschy hat geschrieben:
Fr 3. Nov 2023, 07:23
dass das generell so aussieht, ist jetzt bestätigt worden.
Jetzt kommt die Frage, was diese Vorlage kann. :wink:
Was das Makro tut, steht bei "Makro einfügen" -> "Param".
Insert an editable Cell. Cells can be navigated using the tab key.
The "param" macro takes a list of comma separated arguments.
The first argument is the default value.
The 2nd argument (optional) can be used to link the cell to another cell (syncro edit).

while param("foo") do param(foo);
Inserts 2 independent cells, both with the default text "foo".
The quotes are optional.

if param("foo") > 0 and param("foo",sync=1) < 99 then
Inserts 2 linked cells, editing either one, will change the other one too.
The value "1" refers to the position of the other "param()", so if there are more params:
if param("bar") and param(foo) > 0 and param(foo,sync=2) < 99 then
The 2nd and third are linked (the 3rd refers to "2").

"Sync" can be shortened to "s":
if param("foo") > 0 and param("foo",s=1) < 99 then

if param("bar") and param("foo") > 0 and param("foo",sync) < 99 then
The 2nd and third are linked.
Note: "Sync" has no position and no "=", so it syncs to the previous cell with the same default (in this case "foo").

schoschy
Beiträge: 26
Registriert: Di 18. Okt 2022, 15:46

Re: procedure $Param - Was kann das?

Beitrag von schoschy »

Kurze Rückmeldung dazu.

Soweit ich das jetzt verstanden habe, wird hier in Lazarus PascalSkript verwendet, womit Felder erstellt werden, welche mit Tab anwählbar sind.
Funktioniert natürlich nicht, wenn bei procedure das Makro nicht verwendet wird, weshalb dann der Makrotext im Editor der IDE landet -> daher die Verwirrung.

Haken rein und schon ist das Verhalten wie Ursprünglich angedacht.
Beim durchstöbern der Liste sind auch weitere Makros nicht aktiviert.

Benutzeravatar
theo
Beiträge: 10499
Registriert: Mo 11. Sep 2006, 19:01

Re: procedure $Param - Was kann das?

Beitrag von theo »

schoschy hat geschrieben:
Mo 13. Nov 2023, 13:24
Beim durchstöbern der Liste sind auch weitere Makros nicht aktiviert.
Genau. Das könntest du als Bug melden, da das bestimmt viele verwirrt. https://gitlab.com/freepascal.org/lazar ... s/-/issues
Makro sollte dort im Zweifel aktiviert sein.

Mathias
Beiträge: 6209
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: procedure $Param - Was kann das?

Beitrag von Mathias »

Das $Param kommt noch an einem anderen Ort.
Ich habe gerade folgendes eingetippt. Und [Ctrl-Space] gedrückt.

Code: Alles auswählen

var p:proc
Dann kam auch folgendes zur Auswahl:

Code: Alles auswählen

  var p:procedure $Param(ProcName)($Param());
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten