Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: bandit am 25.08.05 - 11:07:51

Titel: OpenFileDialog und Open For Input
Beitrag von: bandit am 25.08.05 - 11:07:51
ich möchte mit OpenFileDialog eine Datei auswählen und diese dann wie unten angegeben öffnen. Leider klappt das nicht so ganz weil der OpenFileDialog den Dateipfad als Variant zurückliefert und der Open nachher einen String erwartet. Die Zeile mit dem Konvertieren mittels "Cstr" funktioniert leider nicht, kommt ein Fehler. Hat jemand eine Idee dazu?

...
varFilePath=ws.OpenFileDialog(False,"Please Select XML File", "*.xml|*.xml", "")
   If Isempty(varFilePath) Then Goto Ende
   
'-- XML Datei zuweisen und öffnen
   'strFile = "C:\Home\homepage.xml"
   strFile = Cstr(varFilePath)
   intFileNum = Freefile()
   Open strFile For Input As intfileNum
...
Titel: Re: OpenFileDialog und Open For Input
Beitrag von: Wilhelm am 25.08.05 - 11:09:54
Hi,

es ist möglich via OpenFileDialog mehrere Dateien auszuwählen. Deshalb wird ein Array daraus gemacht, auch wenn nur ein Wert drinsteht.

Folglich mußt  Du das Array mit varFilePath(0) ansprechen.

Gruß

Willi
Titel: Re: OpenFileDialog und Open For Input
Beitrag von: bandit am 25.08.05 - 11:15:31
Super, hat geklappt. Dann geht das Cstr auch.

Danke für die schnelle Hilfe!
Titel: Re: OpenFileDialog und Open For Input
Beitrag von: bandit am 25.08.05 - 11:28:34
Eine Frage zur Dateiweiterverwarbeitung hätte ich noch:

Wie kann ich eine Textdatei am besten komplett in eine String Variable einlesen. Mit "Line Input" bekomme ich ja immer nur eine Zeile ausgelesen. Ich weiss auch nie genau wie lang die Datei ist d.h. er sollte bis EOF lesen.
Titel: Re: OpenFileDialog und Open For Input
Beitrag von: Glombi am 25.08.05 - 11:34:23
Das geht so:

dim lineString as string
Open strFile For Input As intfileNum

Do While Not Eof( intfileNum  )
 Line Input #intfileNum, lineString
' ...hier dann die Verarbeitung der Zeile...
Loop

Close intfileNum

Andreas
Titel: Re: OpenFileDialog und Open For Input
Beitrag von: bandit am 25.08.05 - 11:41:18
Muss dann dort wo Du schreibst ".. verarbeitung der zeile" irgendwie rein dass die zeile dann einer 2. variable immer angängt wird, um an ende alle zeilen zusammen und somit den gsammten inhalt zusammen zu haben?
Titel: Re: OpenFileDialog und Open For Input
Beitrag von: Wilhelm am 25.08.05 - 11:45:33
@bandid:

Was genau willst Du eigentlich erreichen?

Gruß

Willi
Titel: Re: OpenFileDialog und Open For Input
Beitrag von: bandit am 25.08.05 - 11:47:27
Was ich oben geschrieben habe, eine Textdatei komplett in eine String Variable einlesen. Also nicht nur eine Zeile sondern alle Zeilen. So wie ich das in dem Beispiel von Glombi lese wird doch immer nur eine Zeile eingelesen und beim nächsten Loop die nächste Zeile und die Variable immer wieder überschrieben.
Titel: Re: OpenFileDialog und Open For Input
Beitrag von: Wilhelm am 25.08.05 - 11:50:39
Ja, das ist richtig.

Dann dimensioniere Dir doch eine zweite Variable und setze sie in die folgende Zeile:

strAllValues = strAllValues + ", " + lineString

Dann hast Du am Ende alle Werte in strAllValues.

Ich vermute aber das Du mit einem Array besser bedient wärst.

Gruß

Willi
Titel: Re: OpenFileDialog und Open For Input
Beitrag von: Glombi am 25.08.05 - 11:50:55
Dann so:

dim lineString as string
dim filecontent as string

filecontent = ""
Open strFile For Input As intfileNum

Do While Not Eof( intfileNum  )
Line Input #intfileNum, lineString
filecontent = filecontent & cstr(10) & lineString
Loop

Close intfileNum

Wo ist das Problem?

Andreas
Titel: Re: OpenFileDialog und Open For Input
Beitrag von: flaite am 25.08.05 - 11:53:47
Oder (wenn auf Windows)
if strAllValues="" then
 strAllValues = lineString
else
strAllValues = strAllValues + Chr$(13) + Chr$(10) + lineString

Dann solltest du nach meiner Meinung den String mit den Zeilenumbrüchen haben.
Titel: Re: OpenFileDialog und Open For Input
Beitrag von: bandit am 25.08.05 - 12:00:38
Danke! Hat geklappt.

Ich dachte nur dass es evtl. noch eine bessere Möglichkeit als das Aufaddieren der Zeilen gibt evtl. nicht über Sequential sondern über Random oder so. Aber so scheints ja dann zu klappen.
Titel: Re: OpenFileDialog und Open For Input
Beitrag von: animate am 25.08.05 - 12:17:42
Ich persönlich würde hier die NotesStream-Klasse verwenden. Mit der ReadText()-Methode liest du den Text in einen String ein.
Titel: Re: OpenFileDialog und Open For Input
Beitrag von: bandit am 26.08.05 - 07:39:36
Könnte man über die NotesStream-Klasse evtl. erreichen dass Umlaute in UTF-8 dann richtig eingelesen werden und aus einem "ö" z.B. wieder ein "ö" wird, so wie es sein soll?

Edit: Habs doch selber gefunden, man kann bei NotesStream "UTF-8" als Zeichencodierung mitgeben dann klappt es. Standardmässig liest NotesStream auch bis zum Ende der Datei und nicht nur bis zum Zeilenende.