# Problem: Zeile an Datei anhängen (FSO)



## Parasite (23. Januar 2003)

Hallo, ich habe diesen Code hier aus diesem Forum und die Namen an mein Projekt angepasst:


```
Private Sub cmdAddToList_Click()
'Anhängen
Dim fso, schreibe
Set fso = CreateObject("Scripting.FileSystemObject")
Set schreibe = fso.OpenTextFile(App.Path & "\kontakte.dat", ForAppending)
schreibe.writeline txtHostRemote.Text
schreibe.Close
End Sub
```

Leider bekomme ich diese Fehlermeldung:
"Ungültiger Prozeduraufruf oder ungültiges Argument"

Was hab ich falsch gemacht?


----------



## Daniel Toplak (23. Januar 2003)

Das liegt daran, daß du die Konstante ForAppending erst deklarieren und belegen musst:


```
Private Sub cmdAddToList_Click()
Const ForReading = 1, ForWriting = 2, ForAppending = 3
' kannst du auch im allgemeinen teil auserhalb den SUB's machen
'Anhängen
Dim fso, schreibe
Set fso = CreateObject("Scripting.FileSystemObject")
Set schreibe = fso.OpenTextFile(App.Path & "\kontakte.dat", ForAppending)
schreibe.writeline txtHostRemote.Text
schreibe.Close
End Sub
```


----------



## Parasite (24. Januar 2003)

Hab ich gemacht. (Hatte ich auch schon vorher)
Daran liegt's nicht...


----------



## Paranoia (24. Januar 2003)

hey..

hast du den Verweis zur *Microsoft Scripting Runtime* (scrrun.dll) erstellt? den braucht es für das FileSystemObject!

greetings para


----------



## Parasite (24. Januar 2003)

Ich habe bereits an einer anderen Stelle ein FSO benutzt um die Datei auszulesen.

ForReading und ForWriting funktionieren, bloß ForAppending nicht!


----------



## Paranoia (24. Januar 2003)

> _Original geschrieben von homer _
> *Das liegt daran, daß du die Konstante ForAppending erst deklarieren und belegen musst:
> *



...diese "Konstanten" sind bereits in der klasse scrrun deklariert und müssen daher nicht noch einmal deklariert werden!

lösch also mal die deklaration raus... dann sollte das klappen!

greetings para


----------



## Parasite (24. Januar 2003)

Yay! Danke!!!!! *bussi*

Und wie mach ich jetzt, dass ich einen Kontakt löschen kann, also dass ich die Zeile der kontakte.dat, die mit dem aktuellen lstKontakte.Text übereinstimmt, lösche und die anderen Zeilen drin bleiben?

(lstKontakte ist eine Listbox)


----------



## Paranoia (25. Januar 2003)

am besten liesst du alle zeilen von kontakte.dat in ein array.. beim anschliessenden zurückschreiben der zeilen ins file, vergleichst du die beiden strings.. sind sie gleich, schreibst du diese zeile nicht ins textfile.. allenfalls kannst du ach alle daten des array's zurückschreiben, bei dem die position [(i)] nicht gleich 'selectedIndex' der Listbox ist.. verstanden was ich meine?  

natürlich kannst du das gleicht auch gleich beim auslesen machen. spielt eigentlich auch keine rolle.. gibt halt ein paar möglichkeiten..

greetings para


----------



## Parasite (25. Januar 2003)

Öhm...*hust*
Ich bin ehrlich gesagt total der Volln00b. 
Hab also kaum was davon verstanden.


----------

