-> Hier kostenlos registrieren
Das ist halt der Return Wert der Funktion. In deinem Fall ein Integer Wert.
Aber der Fehler kommt doch, wenn du die SCL Quelle übersetzen willst?
Der Compiler sagt dir, dass er keinen Baustein kompilieren kann weil er den FC (Zielbaustein) nicht öffnen kann.
Der Aufruf ist nochmal ne andere Geschichte.
Lösche mal den Fc1 in deinem Projektordner (symbol NICHT löschen).
Der Fehler kommt nach der Übersetzung der SCL Quelle im SCL Editor. Meinst du damit, dass ich den Inhalt des FCs löschen soll?
Da stellt sich noch ne allgemeine Frage für mich.
...
END_FOR;
SelectionSort := 100; (1)
END_FUNCTION
(1) bedeutet diese Zeile nicht, dass quasi der Rückgabewert dieser Funktion (Ret_Val) immer eine 100 zurück gibt?
Hi,
Code:// SCL-Programmbeispiel-SelectionSort FUNCTION SelectionSort : INT VAR_IN_OUT // Variablendeklaration arrValues : ARRAY[20,43,10,6,18] OF INT; END_VAR VAR_TEMP Idx1, Idx2, MaxIdx, MaxVal, MAXSIZE : INT; END_VAR [COLOR=red]MAXSIZE := LEN(arrValues); // Bestimmung der Länge des Feldes[/COLOR] FOR Idx1 := MAXSIZE TO 1 BY -1 DO // Werte des Feldes erfassen MaxVal := arrValues[Idx1]; MaxIdx := Idx1;
hier liegt meiner Meinung nach der Fehler, ist LEN ein selbst geschriebener Baustein um die Feldlänge zu ermitteln?
Oder willst Du den in SCL integrierten LEN benutzen? Der ist allerdings nur für Strings und das kann so nicht funktionieren.
Gruss Daniel
Ja genau.. Ich wollte die Funktion LEN für SCL zur Bestimmung der Feldlänge benutzen. Stimmt, sie funtioniert nur für STRINGs. Gibt es denn auch so eine Funktion für ein ARRAY-Feld oder muss man was eigenes zusammenbauen?
Die Array-Deklaration
erscheint etwas sonderbar, bist du sicher dass du ein 5-dimensionales Array willst?Code:arrValues : ARRAY[20,43,10,6,18] OF INT;
C-Syntax kannste nicht 1:1 übernehmen, besonders bei den Array funktioniert das so nicht.
Ebenfalls das LEN glaube ich nicht, dass er dir die Arraygrösse ausliest.
Array deklaration mit Initialwerten:
Code:arrValues: array[1..5] of INT := 20, 43, 10, 6, 18;
weitere Details --> siehe in der Hilfe vom SCL-Editor nach
Hast mich erwischt^^... das hatte ich so aus der C-Programmierung übernommen. Für mich, und damit mein Programm funktioniert, müsste ich diese Variable so deklarieren:
arrValues: ARRAY[0..4] of INT := 20, 43, 10, 6, 18;
Aber wenn man nun keine Anfangswerte in einem FC zuweisen kann, wie macht man das denn dann? Sollte ich statt dessen lieber ein FB verwenden und dort dann die nötigen Parameter deklarieren? Die SelectionSort-Funktion würde ich dann im FB aufrufen über ein FC. Macht man das so?