Code:
fbWriter : FB_CSVMemBufferWriter;
nRow: INT := 1;
sCSVField : ARRAY [1..iSizeOfValueArray] OF T_MaxString;
sCSVLine : ARRAY [1..1000000000] OF BYTE;
str_Power: STRING;
aValueArray : ARRAY [1..iSizeOfValueArray] OF LREAL;
Code:
WHILE nRow <= iSizeOfValueArray DO //nRow wurde oben auf 1 gesetzt
aValueArray[nRow] := nRow + 0.11; //Beispiel aValueArray mit Werten füllen
str_Power:=LREAL_TO_STRING(aValueArray[nRow]); //LREAL WERT ZU STRING VERWANDELN
sCSVField[nRow] := STRING_TO_CSVFIELD( str_Power, FALSE );(* TODO: Get field value from your application *) // STRING IN CSVFIELD VERWANDELN
nRow := nRow +1;
END_WHILE //
fbWriter( pBuffer := ADR( sCSVLine ), cbBuffer := SIZEOF( sCSVLine ), putValue := '', pValue := ADR(sCSVField), cbValue := SIZEOF(sCSVField[1]),
bCRLF := TRUE);(* bCRLF == TRUE => Write CRLF after the last field value *)
IF fbWriter.bOk THEN
fbWriter.eCmd := eEnumCmd_Next;(* Write next field value *)
ELSE(* Error *)
RETURN;
END_IF
Infosys: fbWriter aka FB_CSVMemBufferWriter: ( https://infosys.beckhoff.de/index.ph...Writer.htm&id= )
Also fb.Writer.bOk meldet auch ein FALSE, weswegen da irgendwas schief läuft. Finde den Fehler aber nicht...
Ich denke der Fehler liegt im pValue, dass ich durch sCSVField, irgendwas falsches übergeben...
pValue: Optional: Adresse eines externen Bytepuffers in dem sich das neue Datenfeld befindet. Zusammen mit dem cbValue-Parameter kann dieser Eingang dann benutzt werden wenn z.B. ein Datenfeld mit Steuerzeichen oder Binärdaten in den Datensatz geschrieben werden soll. Die Steuerzeichen oder Binärdaten im Datenfeld könnten den putValue-String an einer ungewünschten Stelle abschneiden und werden deshalb als Bytepuffer übergeben. Dieser Eingang muss den Wert Null haben wenn er nicht benutzt wird.