Autor Thema: FC235 - DT_TO_STRF funktioniert nicht richtig  (Gelesen 5888 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline Chris_Step7

  • Newbie
  • *
  • Beiträge: 2
    • Profil anzeigen
FC235 - DT_TO_STRF funktioniert nicht richtig
« am: 21. April 2016, 17:07:21 »
Hallo zusammen,
ich stehe vor folgendem Problem und hoffe es kann mich jemand erleuchten:

Ich möchte aus einem Date_and_Time Format einen String machen den man in den I&M2 schreiben kann. Dafür würde sich der FC235 eigentlich wunderbar eignen, nur hat die Funktion entweder Fehler oder ich mache etwas falsch.

Der verlangte Datensatz hat das Format: "YYYY-MM-DD HH:MM" also Jahr-Monat-Tag Stunde:Minute jeweils mit 2 Stellen (bzw. 4 beim Jahr). Ich lese momentan die aktuelle Systemzeit mit SFC1 für den DT-Input des FC235 und übergebe einen FMT-String der folgendermaßen aussieht:

'#A-#D-#H #N:#R'

Meiner Meinung nach müsste dabei genau der gewünschte String rauskommen. Was allerdings herauskommt ist: '2016161616161616'

Wenn man mal spaßeshalber die ersten drei Werte umdreht und nur '#H-#D-#A' als FMT übergibt, liefert der Baustein folgendes: '21-00-2016' was ebenso nicht ganz korrekt ist, da es keinen Monat 0 gibt.
 
Ist die Funktion verbuggt? Kann man spezielle Strings nicht generieren? Hab ich irgendwas vergessen? Heeeeeeelp  :'(

*Edit Hab noch vergessen zu sagen dass ich in Step7 V5.5 SP4 mit AWL arbeite.
« Letzte Änderung: 22. April 2016, 08:10:50 von Chris_Step7 »

Offline Chris_Step7

  • Newbie
  • *
  • Beiträge: 2
    • Profil anzeigen
Re: FC235 - DT_TO_STRF funktioniert nicht richtig
« Antwort #1 am: 25. April 2016, 18:00:00 »
Hallo liebe Leute,

ich habe mir inzwischen den Baustein selber nochmal genauer angeguckt und auch den Fehler gefunden.
Mich wundert es etwas, dass das noch vorher keinem aufgefallen ist (ich schließe auch ein Versagen meinerseits noch nicht aus) aber so wie ich das sehe ist hier die benutzte Funktion "Replace" der Übeltäter.

Diese passt nämlich die Länge des auszugebenden Strings nicht korrekt an und verschiebt dadurch alles durcheinander. (Beispiel: Ersetze zwei Zeichen mit vier Zeichen, wie es bei Format '#A' (4-stellige Jahreszahl) der Fall ist.)

Ich habe den Baustein kurzerhand abgeändert, so dass es jetzt reibungslos funktioniert. Leider ist die Handhabung dadurch etwas schwieriger geworden, aber ich habe glaube ich alles fehlerfrei getestet.

Änderungen zum Original:
  • Einige Variablen eingefügt
  • Eine weitere Abhängigkeit (FC20 - LEFT) - Dafür ist die Abhängigkeit von 'REPLACE' weggefallen
  • Formatierungen die auf bestimmte Anzahl an Stellen aufgefüllt werden gefixed (Siehe Originalpost)
  • Zusammensetzen des endgültigen Strings nicht mehr mit "REPLACE" sondern durch "CONCAT"

Unterschiede bei der Handhabung:
Wenn man vor das gewünschte Format noch Zeichen einfügen möchte, so muss man diese ebenso durch ein "#[space]" initialisieren. Ebenso muss man Zeichen am Ende des Strings noch mit "#" abschließen.

Beispiel: Der FMT-STring um: 'Am Sonntag den 1. Mai um 15:00 Uhr werde ich ein Bier trinken' zu generieren sähe dann so aus: ''# Am #K den #G. #F um #M:#R Uhr werde ich ein Bier trinken#'

So, ich gönne mir jetzt besagtes Bier zum Feierabend :D

Viele Grüße

[gelöscht durch Administrator]