Hm, so könnte es auch gehen wenn die Datei nur aus einem System käme. Aber
die Datei kann von einem Linuxsystem, einem Windowssystem oder aber einem
Macsystem kommen. Und die Zeilenendezeichen sind ja auf jedem System
unterschiedlich, mal ist es CHR(13) (das ist bei Clasic Mac so, oder) dann
CHR(10) (Mac OS X und Linux) oder aber CHR(10)+CHR(13) (Windows). Damit hat
man ein variables "Trennzeichen" und ich weis ja nie mit welchem ich rechnen
müsste. Bin jetzt letzte Woche aber auch nicht wirklich dazu gekommen weiter
zu machen, bzw. mir was schlaueres zu überlegen statt das File erstmal
Zeilenweise zu lesen und die Zeilen dabei zu zählen und dann beim zweiten
Mal erst mein Array fülle.


Am 19.11.2008 17:20 Uhr schrieb "Christian Hahn" unter
<[EMAIL PROTECTED]>:

> Lieber Michael,
> müsste das nicht so gehen?:
> ließ die Datei komplett in eine String-Variable 'GesamtText' ein,
> mit split-Funktion, Trennzeichen chr(13) (das ist das Zeilen-Trennzeichen),
> in ein Array 'ZeilenArr' umwandeln,
>    dann hast du die Zeilen-Anzahl
> nun in einer Schleife alle Elemente von 'ZeilenArr' ablaufen
> und jeweils mit split, Trennzeichen (dein Spalten-Trennzeichen), in ein
> weiteres Array 'SpaltenArr' umwandeln.
> Für das 2. Array kannst du bei jedem Schleifen-Durchlauf immer die selbe
> Variable 'SpaltenArr' benutzen, damit du hinterher nicht tausend Arrays
> hast.
> 
> Voraussetzung deines Vorhabens ist wahrscheinlich, dass deine Datei in jeder
> Zeile die gleiche Anzahl von Felder hat oder die 1.Zeile die größte Anzahl
> an Feldern unter allen Zeilen hat. Also, in der Schleife bei der 1. Zeile
> die Anzahl der Spalten abgreifen und zur Dimensionierung deines Ziel-Arrays
> benutzen.
> 
> dim f as folderitem
> dim t as textinputstream
> dim GesamtText as String
> dim AnzahlZeilen, AnzahlSpalten as Integer
> dim ZielArr(0,0) as String
> 
> ...
> t=f.OpenAsTextFile
> GesamtText=t.ReadAll
> t.close
> 
> Zeilenarr = split(GesamtText, chr(13))
> AnzahlZeilen = ubound(ZeilenArr) +1
> 
> for i = 0 to ubound ZeilenArr
>     SpaltenArr = split(ZeilenArr(i))
>     if i = 0 then
>         AnzahlSpalten = ubound(SpaltenArr) +1
>         Redim GesamtArr(AnzahlZeilen, AnzahlSpalten)
>     End if
>     for j = 0 to AnzahlSpalten -1
>         ZielArr(i,j) = SpaltenArr(j)
>     next
> next
> 
> Ich hoffe, dass ich nichts vergessen bzw. übesehen habe
> beste Grüße, Christian Hahn.
> 
> ----- Original Message -----
> From: "Michael K ö hler" <[EMAIL PROTECTED]>
> To: "Realbasic Mailinglist" <[email protected]>
> Sent: Thursday, November 13, 2008 10:03 PM
> Subject: Aus Datei in ein Array einlesen
> 
> 
> Hallo allerseits,
> 
> sicherlich kann mir hier geholfen werden. Ich habe in einer Textdatei
> verschiedene Werte stehen, die ich gerne in ein Array einlesen möchte. Mein
> Problem ist, dass ich nicht weiß wieviele Spalten und wieviele Zeilen ich
> erwarte (das ist von Datei zu Datei unterschiedlich). Ich habe zwar eine
> Lösung wie ich da rankomme aber das ist suboptimal, ich lese die Datei dafür
> zweimal ein. Das muss auch einfacher gehen. Die Anzahl der Spalten bekomm
> ich mit der Split-Funktion recht simpel raus (lese vorher erst eine Zeile
> aus). Zeilenweise auslesen wäre ja eine Lösung und dann einfach an das
> vorhandene Array anhängen. Bei einem eindimensionalen Array geht das ja ganz
> simpel mit append aber bei mehrdimensionalen hab ich noch kein Äquivalent
> dazu gefunden. Hätte da jemand einen Tipp für mich?
> 
> Grüße Michael
> 
> 
> 



Antwort per Email an