Seite 1 von 1

Text element in ein array

Verfasst: 12.11.2025 11:17
von marcelx
Hallo,

ich habe ein Text wie zeile.s = "QWERT ASDFG 123" und möchte jeden Elemnt gesplittet mit " " in ein array speichern ?

Danke
Marcel

Re: Text element in ein array

Verfasst: 12.11.2025 12:29
von Axolotl
Das Forum ist voll von guten Lösungen. Suche z.b: nach Split oder ähnlich. (Bei den meisten Lösungen lernt man auch noch was über Pointer)
Und, haste es schon mal selbst versucht?

Wenn es selbstgemacht sein soll, geht es mit zwei PB-Funktionen (schnell und einfach):

Code: Alles auswählen

Define zeile.s = "QWERT ASDFG 123"
Define Sep$ = " " 
Define Index, Count
Define Dim Result$(0)   ; Empty Array 

Count = CountString(zeile, Sep$) 

If Right(zeile, 1) <> Sep$ : Count + 1 :EndIf 
Dim Results$(Count) ; alloc the memory 

For Index = 1 To Count 
  Results$(Index - 1) = StringField(zeile, Index, Sep$)
  Debug Str(Index) + " = " + Results$(Index - 1)
Next Index 
Oder als Procedure:

Code: Alles auswählen

Define zeile.s = "QWERT ASDFG 123"
Define Dim Result$(0)   ; Empty Array 

Procedure StringToArray(String$, Array Out$(1), Sep$) ; return number of array items 
  Protected result, index, count, field$   

  count = CountString(String$, Sep$) 

  If Right(String$, 1) <> Sep$ : count + 1 :EndIf 
  Dim Out$(count)   ; alloc (and clear) the memory 

  For index = 1 To count 
    Out$(index-1) = StringField(String$, index, Sep$) 
  Next Index 
  ProcedureReturn count ; == ArraySize(Out$()) 
EndProcedure 


Count = StringToArray(zeile, Result$(), " ") 

Debug "Array Size == " + Count 
For Index = 0 To Count - 1 
  Debug Str(index) + " = " + Result$(Index) 
Next Index 
Okay, wenn du bis hier gekommen bist gibts noch einen Link als Belohnung.
Eine Lösung von mk-soft.
SplitString to list or array with option double-quotes (CSV)

Re: Text element in ein array

Verfasst: 12.11.2025 14:06
von marcelx
Wunderbar
Danke

Re: Text element in ein array

Verfasst: 12.11.2025 16:15
von H.Brill
Ich hätte es jetzt so gemacht (ist ein klein wenig kürzer)

Code: Alles auswählen

zeile.s = "QWERT ASDFG 123"
Dim myarray.s(3)
For k = 1 To CountString(zeile, " ") + 1
	  myarray(k - 1) = StringField(zeile, k, " ")
    Debug myarray(k - 1)
Next