// GP Line_2Array, 25.7.01 Ortwin Zillgen
// 1 Line
// 2->tArray
// 3 Tab
// 4 CR
C_LONGINT($i;$j;$N;$L)
C_TEXT($strLine;$1;$FieldDelim;$RecordDelim;$currChar;$currTwoChars)
C_POINTER($P_ZielArray;$2)
C_BOOLEAN($isFieldDelim_b;$isRecDelim_b)
$strLine:=$1
$P_ZielArray:=$2
If (Count parameters>=4)
$FieldDelim:=$3
$RecordDelim:=$4
Else // •••• oz(26062006)
$FieldDelim:=Char(Tab)
$RecordDelim:=Char(Carriage return)
End if
If ($strLine#"")
// zuerst das Array leer machen
$L:=Length($strLine)
$N:=Size of array($P_ZielArray->)
For ($i;1;$N)
$P_ZielArray->{$i}:=""
End for
$j:=1
If ($j>$N) // •••• oz(5122006)
APPEND TO ARRAY($P_ZielArray->;"")
$N:=Size of array($P_ZielArray->) // •••• oz(27032008)
End if
For ($i;1;$L)
$currChar:=$strLine[[$i]]
If ($i<$L)
$currTwoChars:=$strLine[[$i]]+$strLine[[$i+1]]
End if
$isFieldDelim_b:=(($currChar=$FieldDelim) | ($currTwoChars=$FieldDelim))
$isRecDelim_b:=(($currChar=$RecordDelim) | ($currTwoChars=$RecordDelim))
Case of
: ($isFieldDelim_b | $isRecDelim_b)
If ($isRecDelim_b) // 1/12/1
// neuer Datensatz
$j:=$L+1
Else
// neues Feld
$j:=$j+1
If ($j>$N) // •••• oz(5122006)
APPEND TO ARRAY($P_ZielArray->;"")
$N:=Size of array($P_ZielArray->) // •••• oz(27032008)
End if
End if
: ((Character code($currChar)<32) & (Character code($currChar)#Tab))
// nix machen
Else
// Zeichen anfügen
If ($j<=$N) // damit nicht auf leere Zeilen zugegriffen wird `•••• oz (27.03.2008) wieder aktiviert
$P_ZielArray->{$j}:=$P_ZielArray->{$j}+$currChar
End if
End case
End for
// •••• O. Zillgen(180610)Leerzeilen wegwerfen
$N:=Size of array($P_ZielArray->)
For ($i;$N;1;-1)
If ($P_ZielArray->{$i}="")
DELETE FROM ARRAY($P_ZielArray->;$i;1)
Else
$i:=0
End if
End for
// ENDE Anpassung vom(180610)
End if
// *****Ende der Methode: Line_2Array*****