# best. Zeile aulesen und beschreiben



## Stone (26. Januar 2002)

Hi,

ich möchte mit VB eine bestimmte Zeile (z.B. Zeile 5) aus einer Datei auslesen und am Ende wieder beschreiben. Die Zeile enthält dann 3 Teile:
- Titel (30 Zeichen)
- Satz1 (50 Zeichen)
- Satz2 (50 Zeichen)

kann mir vielleicht jemand erklären wie ich die 5. Zeile auslesen, die 3 Teile in verschiedene Textfelder laden und am Ende diese Teile (evtl. veraendert) wieder in die 5. Zeile schreiben kann?

thx schonmal

Stone


----------



## Daniel Toplak (26. Januar 2002)

Versuch das mal so:

Dim Textzeile as String
Dim i as Integer

Open "DATEI1" For Input As #1   ' Datei öffnen.
i=1
Do While Not EOF(1)   ' Schleife bis Dateiende.
   Line Input #1, Textzeile   ' Zeile in Variable einlesen.
   i=i+1
   if i = 5 Then zeile = Textzeile
Loop
Close #1   ' Datei schließen.

'so jetzt steht deine komplette Zeile in "zeile" drin nun 
'musst du  sie nur noch aufteilen

dim titel as String
dim satz1 as String
dim satz2 as string

titel = Left(zeile,30) ' schreibt die ersten 30 Zeichen in titel
satz1 = Mid(zeile,31,50) 'schreibt die 50 Zeichen ab 31 in satz1
satz2 = Right(zeile,50) 'schreibt die letzten 50 Zeichen in satz2

so müsste das gehen, hab das selbst net versucht, aber das haut bestimmt hin, Vorraussetzung, die Anzahl der Zeichen stimmen ganz genau. Also so wie du das angegeben hast:

Titel (30 Zeichen) 
Satz1 (50 Zeichen) 
Satz2 (50 Zeichen)

Gruss Homer


----------



## Stone (26. Januar 2002)

thx erstmal,

aber das (30 Zeichen) sollte nur ein ungefährer Wert sein. Kann man die einzelnen Teile irgendwie raussuchen ohne ihre genaue Länge zu wissen?


----------



## Stone (26. Januar 2002)

oder noch viel besser wäre wenn mir das jemand erläutern könnte:

```
Dim Zeiger As Long
Dim Name() As String
Dim Adresse() As String
Dim Tel() As String
Dim temp
Dim temp1

  '...
  Open "C:\Adressen.txt" For Input As 1
    ReDim Preserve Name(0)
    ReDim Preserve Adresse(0)
    ReDim Preserve Tel(0)
    While Not EOF(1)
      Line Input #1, Name(UBound(Name))
      Line Input #1, Adresse(UBound(Adresse))
      Line Input #1, Tel(UBound(Tel))
      ReDim Preserve Name(UBound(Name) + 1)
      ReDim Preserve Adresse(UBound(Adresse) + 1)
      ReDim Preserve Tel(UBound(Tel) + 1)
    Wend
  Close 1

Dieses kleine Progi liest aus eine Textdatei Name, Adresse und die Tel.Nr und speichert es in die drei Arrays.
```

ganz besonders verstehe ich das _Name(UBound(Name))_ nicht.

Wie müsste die Textdatei überhaupt aussehen, damit er die Daten gleich in ein Array Schreiben kann?

Ich steh da in VB momentan komplett im Nebel 

----

mein Vorhaben ist im Grunde ganz einfach:

Die Textdatei sollte ungefähr so aussehn:


```
Name, Adresse, Tel
Name1, Adresse1, Tel1
Name2, Adresse2, Tel2
...
```

und von der Gwünschten Zeile soll er dann diese 3 Bestandteile in einzelne Textfelder ausgeben.


----------



## bartman336 (27. Januar 2002)

also mal sehen ob ich das einigermaßen erklären kann.

```
Line Input #1, Name(UBound(Name))
```

steht dafür das die (derzeitige) zeile aus der geöffneten Datei
in das Array "Name" an die Position Ubound(Name) geschrieben wird.
wobei das Ubound(Name) die Arraygrenze ausgibt und somit der Wert
immer an die letzte Stelle innerhalb des Arrays.


```
ReDim Preserve Name(UBound(Name) + 1)
```

und hiermit wird dann danach die Arraygrenze um 1 angehoben damit weitere Werte folgen können. Das Preserve steht hierbei dafür das die
schon vorhandenen Werte nicht gelöscht werden.


ich hoffe mal das das einigermaßen verständlich war ansonsten kanns ja vielleicht jemand anders noch mal "besser" erklären oder du haust mich einfach mal per icq an


----------



## Stone (27. Januar 2002)

ja danke, hab jetzt damit n bisschen rumprobiert und jetzt funktionierts auch 
thx


----------



## moaebi (27. Juni 2005)

Hallo Zusammen

habe ein ähnliches Problem. Ich kann jedoch nicht aus der Datei lesen.
Bekomme immer die Fehlermeldung: Laufzeitfehler "62". Einlesen hinter Dateiende.

Das Problem ist, dass die Datei nicht leer ist. Wollte wie oben beschrieben mit Line Input#  ab der 4. Zeile lesen die Daten auslesen.

Die Datei kommt von einem UNIX-System. Ist das eventuell ein Problem?

Würde die Datei gerne jemandem senden, um diese zu überprüfen.

Danke und Gruss
Moreno


----------



## Orakel (27. Juni 2005)

Yap könnte daran liegen.



> Auszug aus der MSDN:
> Die Line Input #-Anweisung liest einzelne Zeichen aus einer Datei, bis ein Wagenrücklauf (Chr(13)) oder eine Folge aus Wagenrücklaufzeichen und Zeilenvorschubzeichen (Chr(13) + Chr(10)) gelesen wird. Die Folge aus Wagenrücklaufzeichen und Zeilenvorschubzeichen wird übersprungen und nicht an die gelesene Zeichenfolge angehängt



Wenn mich nicht alles täusch, werden bei UNIX-Dateien am Zeilen Ende kein Chr(13) sondern nur Chr(10) gesetzt.

Auf welchem Weg bekommst Du die Datei? Bei einigen FTP Programmen kannst Du festlegen, ob das Zeilenende in DOS konforme umgewandelt werden soll.

Gruß
Das Orakel


----------



## moaebi (27. Juni 2005)

Danke für die Info

Die Datei erzeuge ich selbst aus einer CAE Software auf einer UNIX-Workstation. Da ich das NFS-Protokoll auf meinem Windows XP PC installiert habe, kann ich auf die UNIX-Workstation über den Windows-Explorer zugreifen und die Datei von dort auf meine Windows XP Station kopieren. 

Gruss
Moreno


----------

