Pascal, paramcount
Pascal, paramcount
Vielleicht vertehe ich die Beschreibungen nicht recht oder wende die Funktion falsch an.
Was ich will, ist, dass eine aufgerufene Pascal-Routine (Prozedur oder Funktion) feststellt, mit wie vielen Parametern sie aufgerufen wurde.
Was ich will, ist, dass eine aufgerufene Pascal-Routine (Prozedur oder Funktion) feststellt, mit wie vielen Parametern sie aufgerufen wurde.
Re: Pascal, paramcount
https://www.freepascal.org/docs-html/3. ... count.html
Paramcount ist nicht dazu da, die Anzahl übergebener Parameter in eine Funktion zu ermitteln sondern die Anzahl der Parameter an das aufgerufenen Executable.
Wenn mich nicht alles täuscht (Pascal ist bei mir schon so verdammt lang her), gitb es unter Pascal gar keine Möglichkeit, Funktionen bzw. Subroutines mit variabler Parameterliste zu erstellen, womit dann aber auch die Anzahl der Parameter in die Funktion/Subroutine immer fest ist und nicht gezählt werden muß.
Paramcount ist nicht dazu da, die Anzahl übergebener Parameter in eine Funktion zu ermitteln sondern die Anzahl der Parameter an das aufgerufenen Executable.
Wenn mich nicht alles täuscht (Pascal ist bei mir schon so verdammt lang her), gitb es unter Pascal gar keine Möglichkeit, Funktionen bzw. Subroutines mit variabler Parameterliste zu erstellen, womit dann aber auch die Anzahl der Parameter in die Funktion/Subroutine immer fest ist und nicht gezählt werden muß.
Re: Pascal, paramcount
Ich wollte gar keine „variable Parameterliste" erstellen, ich wollte lediglich der aufgerufenen Routine die Anzahl der (festliegenden) Parameter nicht noch als weiteren Parameter übermitteln müssen. Aber das ist dann wohl nicht möglich.
Trotzdem danke!
Google übersetzt mir: mit: Scheint mir schon im englischen Original nicht besonders glücklich ausgedrückt zu sein.
Trotzdem danke!
Google übersetzt mir:
Code: Alles auswählen
Return number of command-line parameters passed to the program.
Code: Alles auswählen
Gibt die Anzahl der an das Programm übergebenen Befehlszeilenparameter zurück.
Re: Pascal, paramcount
Das englische Original ist absolut eindeutig und auch die deutsche Übersetzung ist völlig korrekt. Programm ist ein Executable. Function/Subroutine ist nur Teil eine Programmes.fischic hat geschrieben:09.02.2021 15:10:20Scheint mir schon im englischen Original nicht besonders glücklich ausgedrückt zu sein.
Re: Pascal, paramcount
Das war mir schon klar.Programm ist ein Executable. Function/Subroutine ist nur Teil eine Programmes.
Dazu habe ich eine abweichende Meinung.Das englische Original ist absolut eindeutig
Aber lassen wir's dabei. Das, was ich vorhatte gibt's wohl nicht.
Re: Pascal, paramcount
Kannst du mal einen Grund oder Beispiel nennen, wieso man das tun muss oder will? Mir fällt da nämlich spontan nichts ein...fischic hat geschrieben:09.02.2021 15:10:20Ich wollte gar keine „variable Parameterliste" erstellen, ich wollte lediglich der aufgerufenen Routine die Anzahl der (festliegenden) Parameter nicht noch als weiteren Parameter übermitteln müssen.
Re: Pascal, paramcount
Also von „müssen“ kann gar keine Rede sein und zählen mit ganzen Zahlen kann ich auch schon. Das ist mein privates Hobbyprojekt und dem Publikum vorstellen möchte ich's nicht.
Kurzum:
Ich übergebe einer Prozedur eine Anzahl von Dateiendungen. Stecke die IN derselben in ein Array und lasse dann in einer Schleife alle Dateien mit diesen Endungen löschen. Ich finde es eben etwas unschön, dass ich etwas, was eigentlich kar ist, der Prozedur nochmal explizit klarmachen soll.
Kurzum:
Ich übergebe einer Prozedur eine Anzahl von Dateiendungen. Stecke die IN derselben in ein Array und lasse dann in einer Schleife alle Dateien mit diesen Endungen löschen. Ich finde es eben etwas unschön, dass ich etwas, was eigentlich kar ist, der Prozedur nochmal explizit klarmachen soll.
Re: Pascal, paramcount
Mich hätte auch nicht dein Projekt, sondern der Kopf einer solchen Funktion/Prozedur interessiert. Da die ja offensichtlich keinen variablen Anteil hat, also nicht sowas hier ist
http://rvelthuis.de/articles/articles-openarr.html
sollten ja die Anzahl der Parameter aus der Parameterliste auch direkt ersichtlich sein. Ergo, ich verstehe noch immer dein Problem nicht - ist aber auch egal.
http://rvelthuis.de/articles/articles-openarr.html
sollten ja die Anzahl der Parameter aus der Parameterliste auch direkt ersichtlich sein. Ergo, ich verstehe noch immer dein Problem nicht - ist aber auch egal.
Re: Pascal, paramcount
Wie sollte der in so einem einfachen Fall wohl anders aussehen als :Mich hätte [...] der Kopf einer solchen [...] Prozedur interessiert.
Code: Alles auswählen
Procedure loeschen(ext1,ext2,ext3,...:str3);
Für dich und mich ist das wohl so, nicht aber für die in Rede stehende Routine, die will's offenbar noch mal explizit mitgeteilt bekommen haben.sollten ja die Anzahl der Parameter aus der Parameterliste auch direkt ersichtlich sein.
Re: Pascal, paramcount
Genau das wäre aber eine Funktion mit variabler Parameterliste, also solange die Anzahl der "ext"s mal eins mal drei sein kann, und genau das geht mit Pascal eben nicht.fischic hat geschrieben:09.02.2021 19:07:51Wie sollte der in so einem einfachen Fall wohl anders aussehen als :Mich hätte [...] der Kopf einer solchen [...] Prozedur interessiert.?Code: Alles auswählen
Procedure loeschen(ext1,ext2,ext3,...:str3);
Stecke die exts in ein Array und übergebe das Array und die Arraylänge, dann sind es genau zwei Parameter.
Re: Pascal, paramcount
Und der Link zeigt es ohne die Arraylänge und somit nur mit einem Parameter...
Re: Pascal, paramcount
Der Möglichkeiten gibt's viele, aber ich hätte es gerne so lokal wie möglich.Stecke die exts in ein Array und übergib(1) das Array und die Arraylänge
Ich schätze, das wäre etwas aufwendiger.Genau das wäre aber eine Funktion mit variabler Parameterliste
Lasst es gut sein: Dass man die Parameteranzahl innerhalb einer Routine feststellen kann ist offenbar nicht vorgesehen. Und wenn's so ist, dann ist's eben so.
edit:
tobos link ist mir zu Englisch und soweit ich ihn überflogen habe, setzt der auch objektorientiertes Programmieren voraus. Das ist nicht mein Ding.
(1) 'Tschuldigung, ich konnte nicht widerstehen.
Re: Pascal, paramcount
Offene Array-Parameter setzen kein objektorientiertes Programmieren voraus. Hier ist mal ein Beispielprogramm mit mehreren Aufrufformen, die auch die für dich möglichst lokal Erscheinende enthalten mag:
Code: Alles auswählen
program t;
procedure f(const A: array of string);
var i: integer;
begin
writeln('Länge: ', length(A));
for i := low(A) to high(A) do
writeln('Index[', i, ']: ', A[i]);
end;
var a1: array of string;
a2: array[1..3] of string;
s1, s2, s3: string;
begin
writeln('1. Aufrufmöglichkeit:');
f(['mp4', 'mkv', 'webm']);
s1 := 'mkv'; s2 := 'webm'; s3 := 'mp4';
writeln('2. Aufrufmöglichkeit:');
f([s1, s2, s3]);
setlength(a1, 3);
a1[0] := 'webm'; a1[1] := 'mkv'; a1[2] := 'mp4';
writeln('3. Aufrufmöglichkeit:');
f(a1);
a2[1] := 'mkv'; a2[2] := 'mp4'; a2[3] := 'webm';
writeln('4. Aufrufmöglichkeit:');
f(a2);
end.