-> Hier kostenlos registrieren
Hallo,
Angehaengtes Bild zeigt Daten in einem DB mit dem Array BDAT [0..67] of Char. Die Daten die ich brauche stehen an einer bestimmten Stelle. In meinem Fall BDAT[4..24] wie im Bild.
Jetzt braeuchte ich aber diese in einem String um damit weiter arbeiten zu koennen (in diesem Fall benoetigt ein externer Teilnehmer die Bereitstellung der Daten in From eines Strings).
Mir ist aber nicht klar wie man aus einem Array des Typs Char bestimmte Datenbereiche auslesen kann und dann in einen String wandelt. Zumal kommt noch dazu das ich ein Sonderzeichen in den Daten habe in BDAT [14] (Rautezeichen). Dieses sollte nicht in dem String vorkommen. Man muss also dieses Zeichen „suchen“ und herausnehmen so dass zum Schluss nur noch Zahlen im String stehen. In diesem Fall eben String '53010326499000967152'
Mittles Google habe ich zumindest mal einen SCL code finden koennen der Character zu einem String zusammenfasst mit bestimmter Laenge. Siehe Text weiter unten. Soweit so gut. Man kann natuerlich jetzt muehsam jedes byte laden und transferieren aus dem DB in ein Array mit der Laenge der Daten ohne das Sonderzeichen aber ist das so eine gute Loesung? Dadurch verliere ich ein Stueck weit flexibilitaet falls sich die Daten mal aendern zum Beispiel. Die Daten starten immer an der gleichen Stelle im DB! Also an BDAT[4]
Ich weiss nicht ob das verstaendlich genug war. Hat jemand du sowas schon mal gemacht?
SCL code Char_to_string
Angehaengtes Bild zeigt Daten in einem DB mit dem Array BDAT [0..67] of Char. Die Daten die ich brauche stehen an einer bestimmten Stelle. In meinem Fall BDAT[4..24] wie im Bild.
Jetzt braeuchte ich aber diese in einem String um damit weiter arbeiten zu koennen (in diesem Fall benoetigt ein externer Teilnehmer die Bereitstellung der Daten in From eines Strings).
Mir ist aber nicht klar wie man aus einem Array des Typs Char bestimmte Datenbereiche auslesen kann und dann in einen String wandelt. Zumal kommt noch dazu das ich ein Sonderzeichen in den Daten habe in BDAT [14] (Rautezeichen). Dieses sollte nicht in dem String vorkommen. Man muss also dieses Zeichen „suchen“ und herausnehmen so dass zum Schluss nur noch Zahlen im String stehen. In diesem Fall eben String '53010326499000967152'
Mittles Google habe ich zumindest mal einen SCL code finden koennen der Character zu einem String zusammenfasst mit bestimmter Laenge. Siehe Text weiter unten. Soweit so gut. Man kann natuerlich jetzt muehsam jedes byte laden und transferieren aus dem DB in ein Array mit der Laenge der Daten ohne das Sonderzeichen aber ist das so eine gute Loesung? Dadurch verliere ich ein Stueck weit flexibilitaet falls sich die Daten mal aendern zum Beispiel. Die Daten starten immer an der gleichen Stelle im DB! Also an BDAT[4]
Ich weiss nicht ob das verstaendlich genug war. Hat jemand du sowas schon mal gemacht?
SCL code Char_to_string
Code:
FUNCTION FC1373 : VOID
TITLE = 'FC_Char_To_String'
VERSION : '1.0'
AUTHOR : HeD
VAR_INPUT
Chars : ARRAY[0..67]OF CHAR;
Anzahl : INT;
END_VAR
VAR_TEMP
Zaehler : INT;
Anzahl_Byte : BYTE;
Zeichenkette_AT : STRING;
_Byte AT Zeichenkette_AT : ARRAY[0..1]OF BYTE;
_Chars AT Zeichenkette_AT : ARRAY[0..255] OF Char;
END_VAR
VAR_OUTPUT
Zeichenkette : STRING;
END_VAR
//Variable initialisieren
Zeichenkette_AT := '';
//Größe der Nutzdaten festlegen
Anzahl_Byte:=INT_TO_BYTE(Anzahl);
_Byte[0] := Anzahl_Byte;
_Byte[1] := Anzahl_Byte;
//Die Chars dem String zuweisen
FOR Zaehler := 1 TO 67 BY 1 DO
_Chars[Zaehler+1] := Chars[Zaehler];
END_FOR;
//Temp in Out kopieren
Zeichenkette := Zeichenkette_AT;
END_FUNCTION