Seite 1 von 1

Wie bekomme ich eine LinkedList aus einer Prozedur übergeben

Verfasst: 19.06.2007 14:44
von alen
Hallo Zusammen,

brauche ein wenig Starthilfe. Ich möchte einen String, in meinem Fall stammt der aus einer Ausgabe eines anderen Programmes (Stichwort: ReadProgramString), in einzelne Zeilen zerlegen. Das erledigt der Codeschnippsel unten.

Nach dem Zerlegen liegt das ganze als LinkedList vor. Nun möchte diese LinkedList weiterverarbeiten. Am liebsten als ProcedureReturn so das ich diesen Programmteil immer wieder verwenden kann.

Wie bekomme ich die LinkedList aus der Prozedur übergeben ? Irgendwie gelingt mir das nicht.

Grüße
Alen Hopek

Code: Alles auswählen

Procedure SplitStringToLines(String.s)
  NewList zeilen.s()
  For i=1 To Len(Text.s)
    temp.s + Mid(Text.s, i,1)
    If Mid(Text.s, i, 1) = Chr(13)
      AddElement(zeilen())
      temp.s = RemoveString(Trim(temp.s), Chr(10) )
      temp.s = RemoveString(Trim(temp.s), Chr(13) )
      zeilen() = temp.s
      temp.s = ""
    EndIf
  Next
EndProcedure

Verfasst: 19.06.2007 14:49
von ts-soft
Linklist als Rückgabe geht nicht, nur als Parameter, also so:

Code: Alles auswählen

Procedure SplitStringToLines(zeilen.s(), String.s)
  For i=1 To Len(Text.s)
    temp.s + Mid(Text.s, i,1)
    If Mid(Text.s, i, 1) = Chr(13)
      AddElement(zeilen())
      temp.s = RemoveString(Trim(temp.s), Chr(10) )
      temp.s = RemoveString(Trim(temp.s), Chr(13) )
      zeilen() = temp.s
      temp.s = ""
    EndIf
  Next
EndProcedure 

NewList zeilen.s()
SplitStringToLines(zeilen.s(), "blabla")
Oder die LinkList global deklarieren, ist noch einfacher

Verfasst: 19.06.2007 14:50
von Tafkadasom2k5
Einfach die Linked Lis vor dem Prozeduraufruf erstellen, und dann mit übergeben. Da PB ByRef übergibt (glaube ich, kann ich jetzt auf die Schnelle nicht beweisen :oops: ), wirst du deine Linked-List sozusagen "befüllt" haben, und sie ist trotzdem in der Hauptroutine verfügbar.

Gr33tz
Tafkadasom2k5

Edit:
Damn, THomas war mal wieder schneller <)

Verfasst: 19.06.2007 14:54
von ts-soft
Das einfachste wäre so:

Code: Alles auswählen

Global NewList zeilen.s()

Procedure SplitStringToLines(String.s)
  ClearList(zeilen())
  For i=1 To Len(Text.s)
    temp.s + Mid(Text.s, i,1)
    If Mid(Text.s, i, 1) = Chr(13)
      AddElement(zeilen())
      temp.s = RemoveString(Trim(temp.s), Chr(10) )
      temp.s = RemoveString(Trim(temp.s), Chr(13) )
      zeilen() = temp.s
      temp.s = ""
    EndIf
  Next
EndProcedure