# Textdatei oder Textfeld ordnen/sortieren....



## K-DOG (5. Januar 2002)

wie kann ich eine textdatei oder ein textfeld nach dem ersten buchstaben in der zeile in alphabetischer reihenfolge ordnen?
das einleses usw brauch ich nich.
hoffentlich kann mir jemand helfen
mfg


----------



## Daniel Toplak (5. Januar 2002)

Versuch es doch einfach mit einem Listenfeld anstatt einem Textfeld da kannst du dann die Eigenschaft "Sorted" auf true setzten. (habs selbst noch nicht versucht).

Die andere Möglichkeit ist, du sortierst die Daten beim Auslesen aus der Datei und schreibst die Daten sortiert in ein Array.

Mehr kann ich dir noch nicht helfen, da ich nicht weiss wie deine Textdatei aufgebaut ist, wie du die Daten ausliest und wie die die Daten speicherst.


----------



## K-DOG (5. Januar 2002)

also einlesen tue ich so :

Open test.txt For Input As #1
dat.Text = ""
Do
Line Input #1, zeile
dat.Text = dat.Text & zeile & Chr(13) & Chr(10)
Loop Until EOF(1)
Close #1

das textfile is so aufgebaut :
winkel sind gut
brust will ich haben
click machen

naja einfach für einen satz eine zeile.
der text spielt ja keine rolle.
jetzt wollte ich immer den ersten buchstaben einlesen.
also praktisch nach erstem buchstaben in der zeile sortieren.
mfg


----------



## Daniel Toplak (5. Januar 2002)

Also wie gesagt ich würde zunechst mal den Inhalt der Datei in Arrays schreiben:



dim zeile as string (denk ich mal  )
dim satz() as string
dim zähler as integer
Open test.txt For Input As #1 
dat.Text = "" 
zähler = 1
Do 
  redim satz(zähler) ' brauchst du um die Variable nochmal zu
                     ' Dimensionieren, da du ja nicht weisst wieviele
                     ' Sätze deine Datei hat
  Line Input #1, zeile
  satz (zähler) = zeile
  zähler = zähler + 1
Loop Until EOF(1) 
Close #1 

So nun steht der komplette Inhalt deiner Datei in der Variablen satz()

d.h. in deinem beispiel:

satz(1) = winkel sind gut 
satz(2) = brust will ich haben 
satz(3) = click machen
.
.
.
satz = bla bla bla

So und jetzt kannst du alles mögliche mit deinen Daten anfangen, denn du hast sie ja in der Variablen satz gespeichert.

Ein Sortieralgorithmus geht z.B. so: (ist etwas kompliziert, musst halt bisschen rumprobieren)

Du brauchst dazu eine temporäre Variable z.B tmp_satz
Du vergleichst ob satz(1) größer als satz(2) ist. 
1.)Wenn ja 
dann schreibst du denn inhalt von satz(1) in tmp_satz und sagst, das
satz(1)=satz(2) sein soll. D.h. du schiebst den kleineren Inhalt von 2 auf die Position von 1. Dann belegst du den Inhalt von satz(2) mit dem Inhalt deiner tmp_satz Variablen. Danach machst du weiter und vergleichst satz(2) ob es grösser als satz(3) ist usw...

2.)Wenn nein
dann vergleichst du weiter ob satz(2) größer als satz(3) usw...

Diesen Algorithmus packst du in die innere von 2 Schleifen:

dim zähler1 as integer
dim getauscht as boolean

Do
  getauscht = false
  Do
  'hier kommt deine Prüfung rein

  Loop while zähler1 = zähler 'in der Variablen zähler steht die
                            'Anzahl der Sätze (s. o.)
Loop while getauscht = true

puh, geschafft, so oder so ähnlich geht das mit der Sortierung ich hoffe ich habe es eingigermassen verständlich beschrieben. Ich selbst habe das mal so gemacht und es hat funktioniert, aber leider ist das bei mir in der Schule auf dem Rechner sonst hätte ich dir ein Code-Beispiel geschickt. Viel Spaß beim rumprobieren.

Gruss homer


----------



## K-DOG (6. Januar 2002)

klingt ja ganz gut. aber damit sortiere ich ja nicht nach alphabet.
leider.
trotzdem danke


----------



## Thomas Kuse (6. Januar 2002)

also ein listenfeld kann automatisch sortieren auch nach buchstaben!

du musst dann halt jede zeile extra mit listenfeld.addstring oder ähnliches einfügen, die sortiert er dann automatisch!

da musst du dir aber im klaren sein, dass 10 vor 2 kommt und so weiter!


----------



## Daniel Toplak (6. Januar 2002)

Doch mit dem Vergleich kannst du auch strings vergleichen und somit nach dem Alphabet sortieren.


----------



## K-DOG (6. Januar 2002)

naja okay. ich habe es jetzt besser hibekommen  ich bedanke mich trotzdem recht herrzlich.
danke nochmal
mfg


----------



## Daniel Toplak (6. Januar 2002)

Kein Problem, wäre aber ganz net, wenn du uns bischen erklären würdest, wie du das jetzt gelöst hast. Rein interessehalber.

Man lernt ja nie aus


----------



## K-DOG (7. Januar 2002)

bisher hab ich erstmal nur eine datei in ne listbox eingelesen und die dann über sorted sortiert.
an einer anderen sortier methode werde ich mich morgen okay heute  mal versuchen.
ich hoffe mal das es fukntionieren wird.
mfg


----------

