// 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*****