Split Path

  • Hallo Community,

    folgendes sind ein paar Befehle zum Laden und Lesen eines Inputsignals.


    Eingang:

    File= DlgDateiName( "", "raw", "Referanz auswählen",0)

    File= "~034"+File+"~034"

    FileLoad( File,"",0)

    VariablenName= FsSplitPath(File,2)

    x= <VariablenName>


    Ausgang:

    Fehler beim Ausführen der Sequenz "Unbenannt0" (Zeile 5)

    Ursache: Unbekanntes oder unerwartetes Objekt!

    Befehlszeile: x= PA (02)

    Originalzeile: x= <VariablenName> ; funktioniert nur bei: .dat


    Bemerkung:

    bei ".dat" funktioniert alles wunderbar.


    Hätte jemand eine Idee wie man dieses Problem beheben kann?

  • Bei mir funktioniert dein Code auch mit einer *.raw Datei.


    Kannst du bitte den echten originalen Code hier reinstellen?

    Du scheinst mit Parametern zu arbeiten.

    Zudem denke ich, dass "funktioniert nur bei .dat" nicht in der Fehlermeldung steht. Das hat mich nämlich verwirrt.

    Weil deine Zeile 5 im obigen Code nichts mit *.dat-Dateien zu tun hat.

    VariableName sollte demnach auch keinen Punkt enthalten.


    Wenn aber dein Dateiname einen weiteren Punkt enthält, müsstest du das mit geschweiften Klammern "escapen".


    x = {<VariablenName>}


    Ich denke, es liegt eher ein Tippfehler vor. Es heißt ja "unbekanntes ... Objekt". Ergo kennt er die Variable zu dem Zeitpunkt nicht.

    Oder du hast keinen zweiten(?) Parameter übergeben.



    PS:

    Löblich dein Hinzufügen der Anführungszeichen um der Pfad-Leerzeichen-Problematik aus dem Wege zu gehen.

    Bei FileLoad und FsSplitPath ist das aber nicht notwendig. Notwendig ist dies u.a. für den alten "Laden" Befehl.

  • Und in "PA (2)" ist ein Leerzeichen.

    Beim Verwenden der spitzen Klammern würde dort die Zeile

    x = PA (2) ; ausgelöst

    stehen.


    Ergo:

    x = {<VariablenName>}

    Mit geschweiften Klammern kannst du auch "ungültige" Zeichen in Variablennamen verwenden.


    Dann müsstest es klappen und eine Variable mit Leerzeichen enthalten.

    Ich würde aber allgemein auf Leerzeichen in VariablenNamen verzichten.

    Hierbei kann auch TxGetValidVarName() helfen, welche in neueren Versionen vorhanden ist, sowie der Rename-Befehl.


    Mich wundert nur gerade, dass es mit einer *.dat-Datei geklappt hat. Oder hatte die kein Leerzeichen?

  • Bei "dat" haben die Namen kein Leerzeichen!

    Die Dateien bekomme ich bereitgestellt und ich kümmere mich nur um die Auswertung.

    mit den {} hat es bei mir auch nicht funktioniert, ich musste die 02 auch entfernen .. gibt es eine ähnliche Funktion zu TxGetValidVarName() um bestimmte Zeichen zu entfernen?

  • Bei mir hat es mit folgendem funktioniert:

    x= {<VariablenName>}


    Welche Fehlermeldung kommt dann bei dir? Immer noch die gleiche?

    Welchen Wert hat "VariablenName" ?


    Es gibt noch "TReplace", "TxReplace", "TxRegexReplace".

    Ansonsten hat FAMOS ab der 7.2 oder 7.3 auch für die Funktionen eine Suchfunktion.

  • - Immer noch den gleichen Fehler.

    Mit der Fct: TxReplace hat es aber gut funktioniert, es ist zwar keine universelle Lösung (manche Signale haben den Kennzeichen 02, manche 03... je nach Messtechnikgerät)

    Aber für meinen Fall klappt es!