Autor Thema: OpenFileDialog und Open For Input  (Gelesen 2926 mal)

Offline bandit

  • Aktives Mitglied
  • ***
  • Beiträge: 195
  • Geschlecht: Männlich
OpenFileDialog und Open For Input
« 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
...
Greetz bandit

Offline Wilhelm

  • Aktives Mitglied
  • ***
  • Beiträge: 214
  • Geschlecht: Männlich
Re: OpenFileDialog und Open For Input
« Antwort #1 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
Ich will endlich die F9-Taste in diesem Forum haben!!!

Offline bandit

  • Aktives Mitglied
  • ***
  • Beiträge: 195
  • Geschlecht: Männlich
Re: OpenFileDialog und Open For Input
« Antwort #2 am: 25.08.05 - 11:15:31 »
Super, hat geklappt. Dann geht das Cstr auch.

Danke für die schnelle Hilfe!
Greetz bandit

Offline bandit

  • Aktives Mitglied
  • ***
  • Beiträge: 195
  • Geschlecht: Männlich
Re: OpenFileDialog und Open For Input
« Antwort #3 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.
Greetz bandit

Glombi

  • Gast
Re: OpenFileDialog und Open For Input
« Antwort #4 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

Offline bandit

  • Aktives Mitglied
  • ***
  • Beiträge: 195
  • Geschlecht: Männlich
Re: OpenFileDialog und Open For Input
« Antwort #5 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?
Greetz bandit

Offline Wilhelm

  • Aktives Mitglied
  • ***
  • Beiträge: 214
  • Geschlecht: Männlich
Re: OpenFileDialog und Open For Input
« Antwort #6 am: 25.08.05 - 11:45:33 »
@bandid:

Was genau willst Du eigentlich erreichen?

Gruß

Willi
Ich will endlich die F9-Taste in diesem Forum haben!!!

Offline bandit

  • Aktives Mitglied
  • ***
  • Beiträge: 195
  • Geschlecht: Männlich
Re: OpenFileDialog und Open For Input
« Antwort #7 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.
Greetz bandit

Offline Wilhelm

  • Aktives Mitglied
  • ***
  • Beiträge: 214
  • Geschlecht: Männlich
Re: OpenFileDialog und Open For Input
« Antwort #8 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
Ich will endlich die F9-Taste in diesem Forum haben!!!

Glombi

  • Gast
Re: OpenFileDialog und Open For Input
« Antwort #9 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

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: OpenFileDialog und Open For Input
« Antwort #10 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.
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline bandit

  • Aktives Mitglied
  • ***
  • Beiträge: 195
  • Geschlecht: Männlich
Re: OpenFileDialog und Open For Input
« Antwort #11 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.
Greetz bandit

Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re: OpenFileDialog und Open For Input
« Antwort #12 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.
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Offline bandit

  • Aktives Mitglied
  • ***
  • Beiträge: 195
  • Geschlecht: Männlich
Re: OpenFileDialog und Open For Input
« Antwort #13 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.
« Letzte Änderung: 26.08.05 - 07:53:55 von bandit »
Greetz bandit

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz