Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet 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
...
-
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
-
Super, hat geklappt. Dann geht das Cstr auch.
Danke für die schnelle Hilfe!
-
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.
-
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
-
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?
-
@bandid:
Was genau willst Du eigentlich erreichen?
Gruß
Willi
-
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.
-
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
-
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
-
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.
-
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.
-
Ich persönlich würde hier die NotesStream-Klasse verwenden. Mit der ReadText()-Methode liest du den Text in einen String ein.
-
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.